Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение 12val12 »

Колупаю неспеша C8051F022 подключил экран c75 alps . рисует две осцилограмыы от 2х внутр ацп
хочу замерять внутрипрограмные интеревалы и использовать таймер 3 для этого
читаю даташит. Насторожила фраза
" Timer 3 does not have a counter mode."
что это значит ??
хочу запустить его от clk/12
после цикла остановить и вывести на экран сколько насчитал (TMR3H :TMR3L)*12/Sysclk
ух ты.... показывает
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Документацию читать надо...
Я с силабсами не работал (за недоступностью оных и избытком иного)...
Из местных обитателей разве что Ser60 подскажет.
:roll:
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

12val12 писал(а):что это значит ??
Это значит, что Timer3 не может считать импульсы, поступающие непосредственно с пина корпуса, как это умеют таймеры 0, 1, и 4.
12val12 писал(а):хочу запустить его от clk/12 после цикла остановить и вывести на экран сколько насчитал (TMR3H :TMR3L)*12/Sysclk
В таком режиме он будет работать в соответствии с Вашими намерениями.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Доброго времени суток. Прошу подсказать, как реализуется на ассемблере алгоритм разпознавания строк. Тоесть, по UART приходит строка, и мне нужно распознать, что пришла именно нужная мне строка, и совершить действие. Достаточно подсказать общий алгоритм. Сейчас распознаю посимвольно, поочередно сравнивая каждый символ с образцом (cjne A,'образец',Error), но ведь есть способ красивее ?
12val12
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение 12val12 »

Код: Выделить всё

Timer_16b= (TMR3H<<8)+TMR3L;		 
while ( ...)
{	
500 -5000 мкс
}
Timer2_16b= (TMR3H<<8)+TMR3L;

if (Timer2_16b< Timer_16b ) 
	{  Timer2_16b=65535-Timer2_16b;Timer2_16b= Timer2_16b+ Timer_16b   ; }	
else { Timer2_16b = Timer2_16b - Timer_16b ; }

print_int_X2 (10,10, purple ,Timer2_16b*0.5427);  c75_alps_put_string16(99,0,text4, cyan, black);// U_sec  
иногда проскакивает неадекватное время .. я так понял когда таймер переполняется т е Timer2_16b< Timer_16b
1 тик таймера 0.54 мксек ..
т е весь цикл гарантированно меньше 65 тыс циклов таймера .таймер работает без останова .
или можно принудительно обнулить 3й таймер?
ух ты.... показывает
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Пока_без_кота писал(а):...алгоритм разпознавания строк. ... Сейчас распознаю посимвольно, поочередно сравнивая каждый символ с образцом (cjne A,'образец',Error), но ведь есть способ красивее ?
Если важны все символы более короткого варианта нет.
Как версия - оптимизировать расположение символов в строке с присвоением первому символу значения категории сообщения и таким же образом сортировать предварительно остальное содержание...
Тогда и вектор-переадресация возможна...
:roll:
Субтема для самостоятельного поиска - протоколы обмена для модемов/сетей.
8)
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

Можно и обнулить таймер. Однако, если не обнулять, при Timer2_16b < Timer_16b формула должна быть такой:
Timer2_16b = Timer2_16b - Timer_16b + 65536
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Доброго времени суток. Возник вопрос. Я выставил следующие биты в регистре TMOD:

Код: Выделить всё

mov TMOD,#00001001b
То есть, Таймер0 будет считать, только когда на входе INT0 высокий уровень. Надо ли при таком режиме работы таймера запрещать прерывание INT0 ?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

Прерывания от INT0 не разрешены после ресета. Если INT0 используется только для разрешения работы таймера 0 на аппаратном уровне, разрешать его прерывание не нужно. А если оно до этого было разрешено, его следует запретить.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

В большинстве приложений да...
Ежли только не чего особо экзотического - вида подсчет времени события с фиксацией его (события) начала обработки по прерыванию от вывода INT0.
:)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

А подскажите еще такое. Осваиваю работу с радиомодулями на 433 МГц, и хочу разработать свой протокол. Манчестерское кодирование сложновато в реализации (пока для меня), поэтому решил для простоты взять кодирование длинной импульса. Как мне лучше декодировать посылку? Просто таймером считать врямя каждого импульса, и на основании посчитаных тиков делать вывод 1 или 0. Или задействовать вот такой режим таймера и считать тики только тогда, когда на ноге внешнего прерывания +. При этом я планировал все таки оставить разрешенными прерывание от внешнего входа и в нем сбрасывать таймер. То есть алгоритм следующий:
1. 1 раз пришло прерывание по внешнему входу (значит был низкий уровень на выходе приемника), обнулил таймер и вышли из прерывания.
2. Пришел высокий уровень на внешний вход - таймер сам начал считать.
3. Пришел низкий уровень на внешний вход - это был лог. 0, потому что таймер не переполнился. Сбросим Таймер для следующего подсчета.
4. Если таймер переполнился, значит это была лог. 1. (достаточно долго продержался выс. уровень)

Планирую использовать Таймер0 в режиме 3 (8 бит).
В качестве котроллера передатчика будет выступать скорее всего Тини13, так что про ее алгоритм пока речи нет, но в общем она должна для 0 формировать ипульс до 128 мкс (половина периода 8 бит. таймера MCS-51), а для 1 - больше 300 мкс (чтобы таймер 8 бит. таймер MCS-51 точно успел переполнится).
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

Прежде чем посылку декодировать следует решить как ее передавать. Кодировать 0/1 длиной импульса плохо, т.к. передатчик будет много тока брать в режиме передачи несушей. С точки зрения токопотребления лучше кодировать начало такта кооткими импульсами и потом запускать таймер в прерывании. Т.е. кодировать 0/1 паузами между импульсами. Однако и это не хорошо, если длины передачи 0/1 будут плавать независимо на приемном и передающем концах, например, из-за разницы температур. Для этого имеется само-синхронизирующееся 10-импульсный протокол для передачи байта. Сам когда-то этом занимался:
http://mcs.uwsuper.edu/sb/Electronics/RF/
Но всё это баловство по сравнению с современными радиомодулями. У них и манчестерское кодирование делается аппаратно по желанию и вообще еще много всего.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Ser60 писал(а):Прежде чем посылку декодировать следует решить как ее передавать...
Я пошел от обратного по причине того, что передатчик ничего не будет делать, кроме как передавать, следовательно на его стороне можно реализовать достаточно затратный по ресурсам алгоритм (а следовательно там я могу подстроится, как надо будет), а вот приемник (MCS-51), помимо приема, должен будет выполнять еще кучу разных функций, поэтому я хочу сделать протокол, максимально удобный и простой с точки зрения декодирования его силами MCS-51. За ссылку спасибо, параллельно понемногу учу Пики, будет полезно))
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Обязанности модема-приемника/обработки радиоканала можно и на другую какую-нибудь мелкосхемку сгрузить - а потреблять уже готовую информацию, съедобную для аппаратного приемопередатчика 51-й.
:roll:
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Да, возможен и такой вариант, но тогда я уже наверное и с манчестером буду заморачиватся)) Так что пока поробую разрулить так.
ds3ds3
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср ноя 21, 2012 02:55:37

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение ds3ds3 »

Всем здравствовать!
Читаю журнал РадиоАматор №4 за 2004 год, там про 89с4051.
Как я понял порты имеют неотключаемую подтяжку, кроме двух: Р1.0 и Р1.1;
и ещё активный уровень - низкий, а высокий задаётся подтяжкой.
Изображение
А вот почему VT1 на рис. 21 можно подключать только к "открытым" (видимо неподтянутым) линиям?
Заранее спасибо.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Выводы Р1.0 и Р1.1 у 20-лапок (2051/4051) объединены со входами интегрированного компаратора - посему и "подтяжек" там не установлено.
Выводы портов direct LED - НО для случая подключения между + питания и "общим/GND".
Подключать внешние транзисторы можно любым соответствующим способом.
Документация на все семейство:
http://www.atmel.com/Images/doc4316.pdf = 8051 Microcontrollers Hardware Manual
http://www.atmel.com/Images/doc0509.pdf = 8051 Microcontroller Instruction Set
на конкретный МК:
http://www.atmel.com/Images/doc0368.pdf = AT89C2051 Complete
http://www.atmel.com/Images/doc1001.pdf = AT89C4051 Complete
8)
ds3ds3
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср ноя 21, 2012 02:55:37

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение ds3ds3 »

BOB51 писал(а): Выводы портов direct LED - НО для случая подключения между + питания и "общим/GND".
Между + и - , а где здесь пин контроллера? )
Вывод активный только низкий, правильно?
Поэтому и спросил, что имели ввиду в журнале:
"А вот почему VT1 на рис. 21 можно подключать только к "открытым" (видимо неподтянутым) линиям?"
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Внутренний ключ замыкает цепь на "gnd".
Насчет "VT1" - приглядитесь к схеме подключения - вывод МК выполняет роль коротящего шунта.
Ежли бы выходной каскад был двухтактный (по типу АВР/ПИК) то тот транзистор имел все шансы "дым пустить" (разве что ограничение тока КЗ на уровне 25мА как-то мученья продлит).
Активным уровнем может быть и 1 и 0 - на выбор схемкостроителя. Предпочтение за 0... однако всякие варианты могут встречаться.
У базовой mcs51 нагрузочная способность вообще малюсенькая - и ничего, вполне управляется со своими задачами.
8)
ds3ds3
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср ноя 21, 2012 02:55:37

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение ds3ds3 »

Активный - замыкается внутренним ключом, а пассивный - при разомкнутом ключе подтягивается к + через внутренний резистор; я так это понимаю. А дальше они пишут что подключать подтяжку (рис. 21, R1) можно только туда где нет внутренней подтяжки; вот это и странно: если так включить на остальных портах, то внешняя подключается параллельно внутренней, которая гораздо больше и не повлияет.
А, кстати, вот тут пишут что 4051 можно программировать последовательно:
http://www.gaw.ru/html.cgi/txt/ic/Atmel ... 1_4051.htm
"Доступ ко встроенной флэш-памяти программ организован посредством последовательного интерфейса. Если удерживать вход RST в активном состоянии, то микроконтроллер переходит в режим последовательного программирования и при условии незапрограммированности бит защиты появляется возможность записать или считать память программ."
Что то я не нахожу в гугле таких программаторов для 4051. У кого-нибудь получалось программировать последовательно? А то я уже почти собрал blowit параллельный программатор ).
Вот что это за программатор нужен?
Изображение
Ответить

Вернуться в «Разные вопросы по МК»