Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052
или пополни нашу SMS копилку
Каталог статей
Пульт ДУ стандарт RC5
Файлы к статье rc5.rar В терминале KEY: <toggle>,<address>,<command> Code
//Chip type : ATmega8 //AVR Core Clock frequency: 4.000000 MHz #include <mega8.h> #include <stdio.h> typedef unsigned char byte; typedef unsigned int word; byte evnt; //Счетчик событий word pkv; //Тут хранятся принятые биты bit start; //Первый бит void keypress(byte toggle,byte address,byte command) { //Здесь пишем код, для события printf("KEY: %u,%u,%u\r",toggle,address,command); } void tmr_reset() { TCCR0=0; //Выключаем счетчик TCNT0=0; //Сбрасываем счетчик evnt=0; pkv=0; } interrupt [EXT_INT0] void ext_int0_isr(void) { //Внешнее прерывание if (evnt==0) { //Первое событие TCCR0=4; //Включаем счетчик 15,625КГц start=PIND.2; //Записываем первый бит } if ((evnt&1)!=0&&TCNT0>18) evnt++; if (evnt>0&&(evnt&1)==0) { if (evnt==2) { if (start!=PIND.2) tmr_reset(); //Если первый бит не равен второму, заканчиваем обработку start=!start; //Инвертируем бит }else{ pkv<<=1; //Сдвигаем на бит вправо pkv|=PIND.2^start; //Сохраняем принятый бит } } if (TCCR0!=0) { //Если счетчик не выключен if (evnt==26) keypress((pkv>>11)&1,(pkv>>6)&31,pkv&63); evnt++; //Инкриминируем событие TCNT0=0; //Сбрысываем счетчик } } interrupt [TIM0_OVF] void timer0_ovf_isr(void) { tmr_reset(); //Если счетчик переполнен, выключаем и обнуляем его } void main(void) { DDRD=0; PORTD=4; TIMSK=1; //Прерывание для Счетчика 1 //Разрешаем внешнее прерывание, на любое изменение GICR=0x40; MCUCR=0x01; GIFR=0x40; tmr_reset(); //Настраиваем UART 19200 бод 8 бит UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C; //Пишем в терминал putsf("TEST PHILIPS RC5:\r"); //Разрешаем прерывания #asm("sei") }
Категория: Учимся работать с AVR | Добавил: HiSER (04.03.2010)
| Автор: Литвин Артём
Просмотров: 24232 | Комментарии: 5
| Теги: RC , ATmega8 , Remote Control , Ду , RC5
| Рейтинг: 4.7 /3 |
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев: 5
Порядок вывода комментариев:
По умолчанию
Сначала новые
Сначала старые
0
в файле скачки не исправил строку :word pkv; //Тут зранятся принятые биты)))
0
Вот моя небольшая статья про протокол RC5. Правда у меня под AVG GCC. http://avrlab.com/node/74 Работает хорошо снизу даже видео работы есть. Так же само отправляет значения триггер бита, кода устройства и кода команды.
0
похоже до реального устройства не дошло дело?
я использовал мегу8, принимать сигналы, сейчас вместо кнопок только IR ставлю, удобно. как бы клавиатура к устройству, при чем для этой клаавиатуры нужен всего ОДИН ПОРТ!!
только вот, сильно это тормозит работу МК, если в ней делать ШИМ, то нормально будет работать только ШИМ)))
1
Magistr_devil
(05.03.2010 16:25)
0
Ого уже РЦ5 сделал=) Мож за одно для пультов неизвестных протоколов выложишь=)
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Copyright My-AVR © 2024