|
|
  |
Эмулятор ИК пультов |
|
|
|
Apr 1 2007, 14:02
|
Участник

Группа: Участник
Сообщений: 57
Регистрация: 30-08-05
Пользователь №: 8 094

|
думаю ЭТО то что нужно
Сообщение отредактировал jekler - Apr 1 2007, 14:02
--------------------
|
|
|
|
|
Apr 1 2007, 14:20
|
Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 5-08-04
Пользователь №: 452

|
Тоже мысль возникала сделать универсальный пульт для себя. Из идей - это использовать какой нибудь готовый пульт в который встраивается своя платка, которая понимала бы сигналы излучаемые этим пультом и выдавала нужный. Плюс в том что есть готовый корпус с кнопками, нужно только подключить выход на свою схему а из нее на излучатель. У атмела есть апноты AVR410: Приемник RC5 инфракрасного дистанционного управления описаниеисходникиAVR415: Передатчик RC5 инфракрасного дистанционного управления описаниеисходники
|
|
|
|
|
Apr 2 2007, 21:14
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 22-09-05
Пользователь №: 8 834

|
Цитата(Pyku_He_oTTyda @ Apr 2 2007, 18:01)  я на АВР делал, соневский. Очень просто: запускаем ШИМ, настроенный на 38 кгц, по окончании посылки останавливаем. а можно примерчик?
--------------------
Прошивка это душа микроконтроллера!
|
|
|
|
|
Apr 3 2007, 06:57
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
правда он корявый, сделано на ТИНИ26, 8Мгц выход с PВ1
//Timer/Counter 1 установки таймера PLLCSR=0b00000110; TCCR1A=0b11000010; TCCR1B=0b00000100; TCNT1=0x00; OCR1A=100; OCR1B=0x00;
void waitPLL(void) { //ждем синхронизации PLL при запуске МК (ШИМ тактируется от //встроенного PLL на 64 МГц while((PLLCSR&0x01)==0); }
// генерация старт-бита для посылки сони void start(void) { TCCR1B|=0x80; OCR1C=199; //запуск таймера delay_2.4(); //задержка 2,4 мс (формируется TIMER0) в принципе //можно использовать и задержки из <delay.h>, тогда будет // delay_us(2400); - проверял - работает, но так писать проги //несколько неправильно OCR1C=0; //стоп таймера delay_0.6(); // пауза до посылки следующего импульса (определено протоколом SIRC) (аналогично работает delay_us(600); ) }
насчет програмных задержек, просто, но не всегда надежно - компилятор может и дурить, выход отсчитывать временные интервалы с помощью другого таймера (душевное спокойствие гарантировано) или контролировать то, что получилось осцилографом
--------------------
Андрей Смирнов
|
|
|
|
|
Apr 3 2007, 11:34
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(Pyku_He_oTTyda @ Apr 3 2007, 06:57)  .... // delay_us(2400); - проверял - работает, но так писать проги //несколько неправильно .... // ..... delay_us(600); ) } Не правильно, правильно так: delay_ms(2.4); delay_ms(0.6); И оптимизация как минимум -O1. Анатолий.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|