Суббота, 23.11.2024, 15:40
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052

или пополни нашу SMS копилку
SMS.копилка

Ссылки

 Каталог статей
Главная » Статьи » Учимся работать с AVR

Пульт ДУ стандарт 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
5 cs16amx  
0
в файле скачки не исправил строку :word pkv; //Тут зранятся принятые биты)))

4 Johni  
0
Ребята у кого есть модель RC5 передатчика для PROTEUSа

3 extremist  
0
Вот моя небольшая статья про протокол RC5. Правда у меня под AVG GCC.
http://avrlab.com/node/74
Работает хорошо снизу даже видео работы есть. Так же само отправляет значения триггер бита, кода устройства и кода команды.

2 SpSpider  
0
похоже до реального устройства не дошло дело?
я использовал мегу8, принимать сигналы, сейчас вместо кнопок только IR ставлю, удобно. как бы клавиатура к устройству, при чем для этой клаавиатуры нужен всего ОДИН ПОРТ!!
только вот, сильно это тормозит работу МК, если в ней делать ШИМ, то нормально будет работать только ШИМ)))

1 Magistr_devil  
0
Ого уже РЦ5 сделал=) Мож за одно для пультов неизвестных протоколов выложишь=)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright My-AVR © 2024
Наша кнопка
У нас появилась кнопка, код кнопки:

Лаборатория самоделок на микроконтроллерах AVR

Форма входа
Наш опрос
Как вам материалы на сайте
Всего ответов: 864
Статистика/Друзья
CY-PR.com



Онлайн всего: 1
Гостей: 1
Пользователей: 0

РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум Сайт по радиоэлектронике. У нас все просто и интересно… ARV Reserch: Электроника — просто, полезно, увлекательно. Электронные устройства и программные средства для радиолюбителей и профессионалов, только авторские разработки, плагиата нет! Разработки на заказ. AVR projects Создание электронных роботов своими руками Схемы и программы на AVR http://ur5yfv.ucoz.ua/BANNER.gif Блог начинающего эмбеддера. Дай волю паяльнику! Самоделки на all-make.ru Принципиальные схемы Модулі автозапуску бензогенератора та системи АВР, електромонтажні роботи
Хостинг от uCoz