Ни у кого никогда не возникало желания рулить своими конструкциями, используя пульт ДУ от телека или еще от чего?
А у меня вот возникло.
Посему возникает вопрос, нет ли у кого толковой реализации протокола RC-5 на С под AVR?
В И-нете кое-что встречается, но либо не работает, либо криво...
Просто не хочется велосипед изобретать...
Дык всё просто. Сам протокол РЦ-5 известен. Из железа вешаешь TSOP на прерывание и фиксируешь временные интервалы между прерываниями. Врменные интервалы можно фиксировать взведённым рядом таймером и съёмом его значения с последующим обнулением.
Если жалко прерывание можешь опрашивать порт, но это ИМХО большая нагрузка на проц и "тормознутость" основной работы проца, всё равно что печатать яркую большую фотографию через LPT printer, когда есть возможность переткнуть его в USB. Всё остальное дело техники.
Если будут проблемы - пиши.
Кстати РЦ-5 это же самосинхронизирующийся сигнал? Помоему всё тоже что и на RFID устройствах, токак пакет другой. Работа с 125kHz RFID устройствоим у меня есть, с учётом шифрования кода Манчестером.
Насколько я понял, именно так это все обычно и реализуется, уже читал, все равно спасибо...
Но, сам понимаешь, лень - двигатель прогресса...
думаю, поищу еще чего готовое, да и напишу сам в итоге.
Не поделитесь исходникм приемника RC5 на Тини2313 желательно под Code Vision AVR. Частота МК желательно 4мгц или 8мгц. Искал, и нечего толкового не нашол.
Krik99 писал(а):to AndreiVV
Это же вроде не под Тини2313.
Этот код под серию классик, а я использовал этот код на серию мега.
Что мешает вам использовать функцию обработки приема? Вам надо просто настроить таймер, прерывание и изменить название регистров и у вас будет под тини.
Какраз на основе этого исходника и написал тестовую программу для Мега8515. Там всё норм. А вот этот же исходник под Тини2313 неудаётся, первая проблема это настройка таймера, так как у Мега16 и Мега8515 настройки таймера совпадают, а у Тини 2313 регистры отличаются.
К примеру тотже TCCR0 = 0x04; у Тини2313 вместо него если я нечего не путаю TCCR0A=0x00; TCCR0B=0x00; тогда это будет так что-ли