Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#201 31.10.2006 23:30:40

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

Pyku_He_oTTyda пишет:

атмеловский апнот: AVR410: RC5 IR Remote Control Receiver написан уже "авр-овским" ассемблером, найдете там что либо для себя

Хороший аппнот. Тока вот не совсем ясно, что бы это значило:

When the detect subroutine is called, it first waits for the data line to be idle high for
more than 3.5 ms. Then, a start bit can be detected.

Я перевел так:
"Когда вызывается подпрограмма детектирования, в первую очередь ожидается что линия данных будет находиться в состоянии покоя (высокий уровень) дольше чем 3,5 мс. Значит, стартовый бит может быть принят".
Однако не понял все равно ничего. Зачем ждать 3,5 мс??
И откуда они там возьмутся? 3,5 мс - это чуть меньше двух тактов, а всостоянии покоя линия может находиться скоько угодно долго.

странная цифра и странное действие. Не охота применять, не разобравшись.


......There is someone in my head, but it's not me.......

Вне форума

#202 01.11.2006 01:34:24

VladI+
Новичок
Откуда: Белая Русь
Здесь с 01.11.2006
Сообщений: 10

Re: AVR для "чайников"

журналСхемотехника № 12 2003 (стр 41-42) - Организация обмена информацией по ИК каналу (AT90S2313)
Радио 2005 №11 (стр 30-31) -Микроконтроллерная система дистанционного управления
-AT90S2313
журнал РадиоХобби за 2006 год №1(стр.44-47)-ATmega8

Вне форума

#203 01.11.2006 01:52:10

VladI+
Новичок
Откуда: Белая Русь
Здесь с 01.11.2006
Сообщений: 10

Re: AVR для "чайников"

biprog - nejen ISP programator
web.quick.cz/ruckl/biprog/biprog.html
Достойный выбор программатора для программирования микроконтроллеров
фирмы ATMEL

Вне форума

#204 01.11.2006 07:21:26

Pyku_He_oTTyda
Ветеран
Откуда: г.Великие Луки
Здесь с 23.01.2004
Сообщений: 531

Re: AVR для "чайников"

VladI+ пишет:

biprog - nejen ISP programator
web.quick.cz/ruckl/biprog/biprog.html
Достойный выбор программатора для программирования микроконтроллеров
фирмы ATMEL

а что в нем особенного?
1. Чем не устраивает AVRISP или более развитый на базе STK500
2. Он еще на СОМпорт, что в данное время неактуально


Андрей Смирнов

Вне форума

#205 01.11.2006 07:29:29

VladI+
Новичок
Откуда: Белая Русь
Здесь с 01.11.2006
Сообщений: 10

Re: AVR для "чайников"

Pyku_He_oTTyda пишет:
VladI+ пишет:

biprog - nejen ISP programator
web.quick.cz/ruckl/biprog/biprog.html
Достойный выбор программатора для программирования микроконтроллеров
фирмы ATMEL

а что в нем особенного?
1. Чем не устраивает AVRISP или более развитый на базе STK500
2. Он еще на СОМпорт, что в данное время неактуально

Просто это STK500 +AVR910ю  И  всего одна м/с.
Читаем:
Automatická změna režimu (AVRISP/AVR910) podle ovládacího programu
Možnost upgrade firmware pomocí bootloaderu

Poslední použitá polarita signálu RESET je uložena v paměti EEPROM a platí i po zapnutí
Poslední použitá frekvence SCK je uložena v paměti EEPROM a platí i po zapnutí
Podpora všech ISP mikroprocesorů Atmel včetně AT89S51/52, AT89S8252 a AT89S2051/4051
Jednostranná, snadno amatérsky zhotovitelná, deska plošných spojů
Nevyužité porty ATmega8 jsou vyvedeny na konektor a umožňují i jiné využití hardware

И порт USB есть.

Отредактировано VladI+ (01.11.2006 07:49:05)

Вне форума

#206 01.11.2006 10:49:11

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Матроскин пишет:
Pyku_He_oTTyda пишет:

атмеловский апнот: AVR410: RC5 IR Remote Control Receiver написан уже "авр-овским" ассемблером, найдете там что либо для себя

Хороший аппнот. Тока вот не совсем ясно, что бы это значило:

When the detect subroutine is called, it first waits for the data line to be idle high for
more than 3.5 ms. Then, a start bit can be detected.

Я перевел так:
"Когда вызывается подпрограмма детектирования, в первую очередь ожидается что линия данных будет находиться в состоянии покоя (высокий уровень) дольше чем 3,5 мс. Значит, стартовый бит может быть принят".
Однако не понял все равно ничего. Зачем ждать 3,5 мс??
И откуда они там возьмутся? 3,5 мс - это чуть меньше двух тактов, а всостоянии покоя линия может находиться скоько угодно долго.

странная цифра и странное действие. Не охота применять, не разобравшись.

1. Про перевод - учите "родной"английский язык".
2. Где берут такие тупые процы, у которых 3 милисекунды - это два такта?
3. 3,5 мс - а чаще 5 мс - это время, которое обычно используют для подавления ДРЕБЕЗГА.

Именно поэтому (не) Ваша подпрограмма 3,5 милисекунды проверяет, что на входе будет стабильно высокий уровень (а не дребез). И потом начинается распознавание стартового бита...


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#207 01.11.2006 12:16:07

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Матроскин пишет:

Зачем ждать 3,5 мс??

Ждать нужно для того, чтобы убедиться, что мы вызвали функцию detect не в середине посылки. Нам нужно "поймать" стартовый бит, а он всегда передается первым в посылке. Поэтому перед ним всегда должна быть "тишина". Вот это мы и проверяем.

Матроскин пишет:

И откуда они там возьмутся? 3,5 мс - это чуть меньше двух тактов, а в состоянии покоя линия может находиться сколь угодно долго. Странная цифра и странное действие. Не охота применять, не разобравшись.

Выбор значения 3.5 мс достаточно произволен. Интервал должен быть не меньше одного такта RC-5 (1.778 мс), но и не слишком большим, чтобы декодирование состоялось при вызове detect непосредственно перед старт-битом.

Надо сказать, что программные декодеры RC-5, которые вызываются из основной программы - это несерьезно. Нормальный декодер должен работать по прерываниям. Чтобы обработчик был как можно короче, потребуется задействовать два прерывания - внешнее (куда нужно подать сигнал с выхода фотоприемника) и прерывание таймера (для контроля всех временных интервалов).

Вне форума

#208 01.11.2006 13:57:58

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

Основная проблема заключается в том, что я не совсем понимаю суть, т.е, что именно надо сделать для декодирования RC5. В том аппноте написано:

The measurement of the start bit is used to calculate two reference times, ref1 and ref2, which are used when sampling the data line. The program uses the edge in the middle of every bit to synchronize the timing. 3/4 bit length after this edge, the line is sampled. This is in the middle of the first half of the next bit (see Figure 5). The state is stored and the routine waits for the middle edge. Then, the timer is synchronized again and everything is repeated for the following bits. If the synchronizing edge is not detected within 5/4 bit times from the previous synchronizing edge, this is detected as a fault and the routine terminates. When all the bits are received, the command and system address are stored in the
“command” and “system” registers. The control bit is stored in bit 6 of “command”.

Т.е. они меряют стартовый бит для получения двух опорных временных интервалов. Затем ждут середины такта (где-то там будет перепад), через 3/4 такта после перепада делают выборку (а ведь это-то уже следующий бит) и сохраняют значение. С виду все просто, конечно. Ну и нужны еще условия о которых там говориться. Если стартовый импульс оказался длинее 1,1мс - ошибка, если через 5/4 после середины предидущего бита новый перепад не замечен - ошибка и тд.
Стартовых бита ведь 2. Можно по-моему первый использовать для инициирования прерывания, а второй уже мерить. Тока ни фига не ясно, как получить значение в 3/4 такта. Измерив импульс (хоть нулевую, хоть единичную его часть) мы получим 1/2 такта. 3/4 можно бы получить как 3/4 = (1/2)+(1/2)/2, но делить-то мы не можем (по крайней мере "влоб" такой команды нет, надо изголяться, и неизвестно сколько времени уйдет на эту операцию). В аппноте это как-то сделано, но как - я не понял.
Да, наверно надо идти водилой работать... sad

Отредактировано Матроскин (01.11.2006 14:00:24)


......There is someone in my head, but it's not me.......

Вне форума

#209 01.11.2006 14:12:51

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Матроскин пишет:

Тока ни фига не ясно, как получить значение в 3/4 такта. 3/4 можно бы получить как 3/4 = (1/2)+(1/2)/2, но делить-то мы не можем

Деление на 2 - это просто один сдвиг влево, одна команда.

Например,
                      ;temp = 1/2 периода
mov ref1,temp ;ref1 = 1/2 периода
lsr ref1            ;ref1 = 1/4 периода
add temp,ref1  ;temp = 3/4 периода

Вне форума

#210 01.11.2006 17:28:01

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

Блин, все оказывается проще! Тока вот сдвиг не влево а вправо. lsr - logical shift right, да и так если сосчитать. 0b1000 = 8 а 0b100 = 4


......There is someone in my head, but it's not me.......

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.069 сек, 8 запросов выполнено - Использовано памяти: 626.15 Кбайт (Пик: 676.52 Кбайт) ]