Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Колупаю неспеша C8051F022 подключил экран c75 alps . рисует две осцилограмыы от 2х внутр ацп
хочу замерять внутрипрограмные интеревалы и использовать таймер 3 для этого
читаю даташит. Насторожила фраза
" Timer 3 does not have a counter mode."
что это значит ??
хочу запустить его от clk/12
после цикла остановить и вывести на экран сколько насчитал (TMR3H :TMR3L)*12/Sysclk
хочу замерять внутрипрограмные интеревалы и использовать таймер 3 для этого
читаю даташит. Насторожила фраза
" Timer 3 does not have a counter mode."
что это значит ??
хочу запустить его от clk/12
после цикла остановить и вывести на экран сколько насчитал (TMR3H :TMR3L)*12/Sysclk
ух ты.... показывает
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Документацию читать надо...
Я с силабсами не работал (за недоступностью оных и избытком иного)...
Из местных обитателей разве что Ser60 подскажет.

Я с силабсами не работал (за недоступностью оных и избытком иного)...
Из местных обитателей разве что Ser60 подскажет.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Это значит, что Timer3 не может считать импульсы, поступающие непосредственно с пина корпуса, как это умеют таймеры 0, 1, и 4.12val12 писал(а):что это значит ??
В таком режиме он будет работать в соответствии с Вашими намерениями.12val12 писал(а):хочу запустить его от clk/12 после цикла остановить и вывести на экран сколько насчитал (TMR3H :TMR3L)*12/Sysclk
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Доброго времени суток. Прошу подсказать, как реализуется на ассемблере алгоритм разпознавания строк. Тоесть, по UART приходит строка, и мне нужно распознать, что пришла именно нужная мне строка, и совершить действие. Достаточно подсказать общий алгоритм. Сейчас распознаю посимвольно, поочередно сравнивая каждый символ с образцом (cjne A,'образец',Error), но ведь есть способ красивее ?
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Код: Выделить всё
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 1 тик таймера 0.54 мксек ..
т е весь цикл гарантированно меньше 65 тыс циклов таймера .таймер работает без останова .
или можно принудительно обнулить 3й таймер?
ух ты.... показывает
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Если важны все символы более короткого варианта нет.Пока_без_кота писал(а):...алгоритм разпознавания строк. ... Сейчас распознаю посимвольно, поочередно сравнивая каждый символ с образцом (cjne A,'образец',Error), но ведь есть способ красивее ?
Как версия - оптимизировать расположение символов в строке с присвоением первому символу значения категории сообщения и таким же образом сортировать предварительно остальное содержание...
Тогда и вектор-переадресация возможна...
Субтема для самостоятельного поиска - протоколы обмена для модемов/сетей.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Можно и обнулить таймер. Однако, если не обнулять, при Timer2_16b < Timer_16b формула должна быть такой:
Timer2_16b = Timer2_16b - Timer_16b + 65536
Timer2_16b = Timer2_16b - Timer_16b + 65536
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Доброго времени суток. Возник вопрос. Я выставил следующие биты в регистре TMOD:
То есть, Таймер0 будет считать, только когда на входе INT0 высокий уровень. Надо ли при таком режиме работы таймера запрещать прерывание INT0 ?
Код: Выделить всё
mov TMOD,#00001001bRe: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Прерывания от INT0 не разрешены после ресета. Если INT0 используется только для разрешения работы таймера 0 на аппаратном уровне, разрешать его прерывание не нужно. А если оно до этого было разрешено, его следует запретить.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
В большинстве приложений да...
Ежли только не чего особо экзотического - вида подсчет времени события с фиксацией его (события) начала обработки по прерыванию от вывода INT0.

Ежли только не чего особо экзотического - вида подсчет времени события с фиксацией его (события) начала обработки по прерыванию от вывода 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 точно успел переполнится).
1. 1 раз пришло прерывание по внешнему входу (значит был низкий уровень на выходе приемника), обнулил таймер и вышли из прерывания.
2. Пришел высокий уровень на внешний вход - таймер сам начал считать.
3. Пришел низкий уровень на внешний вход - это был лог. 0, потому что таймер не переполнился. Сбросим Таймер для следующего подсчета.
4. Если таймер переполнился, значит это была лог. 1. (достаточно долго продержался выс. уровень)
Планирую использовать Таймер0 в режиме 3 (8 бит).
В качестве котроллера передатчика будет выступать скорее всего Тини13, так что про ее алгоритм пока речи нет, но в общем она должна для 0 формировать ипульс до 128 мкс (половина периода 8 бит. таймера MCS-51), а для 1 - больше 300 мкс (чтобы таймер 8 бит. таймер MCS-51 точно успел переполнится).
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Прежде чем посылку декодировать следует решить как ее передавать. Кодировать 0/1 длиной импульса плохо, т.к. передатчик будет много тока брать в режиме передачи несушей. С точки зрения токопотребления лучше кодировать начало такта кооткими импульсами и потом запускать таймер в прерывании. Т.е. кодировать 0/1 паузами между импульсами. Однако и это не хорошо, если длины передачи 0/1 будут плавать независимо на приемном и передающем концах, например, из-за разницы температур. Для этого имеется само-синхронизирующееся 10-импульсный протокол для передачи байта. Сам когда-то этом занимался:
http://mcs.uwsuper.edu/sb/Electronics/RF/
Но всё это баловство по сравнению с современными радиомодулями. У них и манчестерское кодирование делается аппаратно по желанию и вообще еще много всего.
http://mcs.uwsuper.edu/sb/Electronics/RF/
Но всё это баловство по сравнению с современными радиомодулями. У них и манчестерское кодирование делается аппаратно по желанию и вообще еще много всего.
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Я пошел от обратного по причине того, что передатчик ничего не будет делать, кроме как передавать, следовательно на его стороне можно реализовать достаточно затратный по ресурсам алгоритм (а следовательно там я могу подстроится, как надо будет), а вот приемник (MCS-51), помимо приема, должен будет выполнять еще кучу разных функций, поэтому я хочу сделать протокол, максимально удобный и простой с точки зрения декодирования его силами MCS-51. За ссылку спасибо, параллельно понемногу учу Пики, будет полезно))Ser60 писал(а):Прежде чем посылку декодировать следует решить как ее передавать...
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Обязанности модема-приемника/обработки радиоканала можно и на другую какую-нибудь мелкосхемку сгрузить - а потреблять уже готовую информацию, съедобную для аппаратного приемопередатчика 51-й.

-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Да, возможен и такой вариант, но тогда я уже наверное и с манчестером буду заморачиватся)) Так что пока поробую разрулить так.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Всем здравствовать!
Читаю журнал РадиоАматор №4 за 2004 год, там про 89с4051.
Как я понял порты имеют неотключаемую подтяжку, кроме двух: Р1.0 и Р1.1;
и ещё активный уровень - низкий, а высокий задаётся подтяжкой.

А вот почему VT1 на рис. 21 можно подключать только к "открытым" (видимо неподтянутым) линиям?
Заранее спасибо.
Читаю журнал РадиоАматор №4 за 2004 год, там про 89с4051.
Как я понял порты имеют неотключаемую подтяжку, кроме двух: Р1.0 и Р1.1;
и ещё активный уровень - низкий, а высокий задаётся подтяжкой.

А вот почему VT1 на рис. 21 можно подключать только к "открытым" (видимо неподтянутым) линиям?
Заранее спасибо.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Выводы Р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

Выводы портов 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
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Между + и - , а где здесь пин контроллера? )BOB51 писал(а): Выводы портов direct LED - НО для случая подключения между + питания и "общим/GND".
Вывод активный только низкий, правильно?
Поэтому и спросил, что имели ввиду в журнале:
"А вот почему VT1 на рис. 21 можно подключать только к "открытым" (видимо неподтянутым) линиям?"
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Внутренний ключ замыкает цепь на "gnd".
Насчет "VT1" - приглядитесь к схеме подключения - вывод МК выполняет роль коротящего шунта.
Ежли бы выходной каскад был двухтактный (по типу АВР/ПИК) то тот транзистор имел все шансы "дым пустить" (разве что ограничение тока КЗ на уровне 25мА как-то мученья продлит).
Активным уровнем может быть и 1 и 0 - на выбор схемкостроителя. Предпочтение за 0... однако всякие варианты могут встречаться.
У базовой mcs51 нагрузочная способность вообще малюсенькая - и ничего, вполне управляется со своими задачами.

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

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