Страница 1 из 2
ИК пульт управления на AVR
Добавлено: Ср авг 25, 2010 14:44:27
Skiludr
Моя задумка такова: хочу сделать пульт управления на основе ИК диодов. Передатчик либо обычный пульт от бытовой техники либо схемка на AVR. А приемник, это схемка с фотоприемником и AVR, схема приемника должна при нажатии кнопки на пульте включать нагрузку т.е. 1 на лапке микроконтроллера. Помогите реализовать или подскажите как это сделать!
Re: ИК пульт управления на AVR
Добавлено: Ср авг 25, 2010 16:29:46
belyay
Re: ИК пульт управления на AVR
Добавлено: Ср авг 25, 2010 16:59:02
Skiludr
Хотелось бы что-о более конкретное, рабочий проект например))
Re: ИК пульт управления на AVR
Добавлено: Чт авг 26, 2010 17:21:42
PB_EXPERT
Прошивку для RC5 приёмника и передатчика, можно сделать в среде
BASCOM
Для приёмника используется команда GETRC5, а для передатчика - RC5SEND
Примеры есть в хелпе баскома.
Re: ИК пульт управления на AVR
Добавлено: Пт авг 27, 2010 07:13:23
Anode_Katode
PB_EXPERT писал(а):Прошивку для RC5 приёмника и передатчика, можно сделать в среде BASCOM
Для приёмника используется команда GETRC5, а для передатчика - RC5SEND
Да, есть такие команды. Только почему-то далеко не все пульты воспринимают
Для сравнения я сделал вот такой девайс:
http://radioded.ru/content/view/129/1/ и собственную штуковину на меге8 с прошивкой на бейсике. В результате из 8 пультов схема на тиньке13 приняла 7, а мега на бейсике всего 5.
ИК приемники одинаковые стояли, тактовая частота МК тоже одинаковая была.
Re: ИК пульт управления на AVR
Добавлено: Пт авг 27, 2010 08:28:33
ooogo
Re: ИК пульт управления на AVR
Добавлено: Сб сен 04, 2010 14:46:26
lluganet
http://aes.at.ua/publ/31-5-2
там есть несколько разных и довольно простых устройств с обучением под пульт
Re: ИК пульт управления на AVR
Добавлено: Сб сен 04, 2010 16:05:04
aleksandr-zh
Skiludr писал(а):Моя задумка такова: хочу сделать пульт управления на основе ИК диодов. Передатчик либо обычный пульт от бытовой техники либо схемка на AVR. А приемник, это схемка с фотоприемником и AVR, схема приемника должна при нажатии кнопки на пульте включать нагрузку т.е. 1 на лапке микроконтроллера. Помогите реализовать или подскажите как это сделать!
я делал это
часть кода тут
http://bascomavr.3bb.ru/viewtopic.php?id=287
если есть вопросы - в личку
Re: ИК пульт управления на AVR
Добавлено: Пн сен 06, 2010 19:11:48
Alex Medvedev
Я собирал вот такой пультик
http://avrdevices.ru/ik-pulyt/
Посмотри может поможет. Протокол RC5 только у меня там бит toggle не используется. Лень было заморачиваться =)
Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 00:58:38
Секретный кот
Anode_Katode писал(а):Да, есть такие команды. Только почему-то далеко не все пульты воспринимают

Может, потому что далеко не все пульты – RC5?

Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 06:51:13
Anode_Katode
Секретный кот писал(а):Может, потому что далеко не все пульты – RC5?
Ах, если бы, ах если бы...
К сожалению, проверялись гарантировано RC5.
Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 07:12:15
ARV
а я сейчас завершаю тестирование своей собственной библиотечки
WinAVR для приема-передачи RC5. пока тесты очень положительные результаты дают. передача требует порядка 300 байт flash-памяти AVR, а прием - порядка 700, т.е. можно даже на тини13 делать девайсы.
как закончу тестирование - опубликую на своем сайте

Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 07:47:36
aleksandr-zh
кусок кода под FastAVR
Код: Выделить всё
'=== примем 8 бит ============
Function RX() As Byte
Local tiki As Byte, temp3 As Byte, DATA_RX As Byte
For temp3 = 7 To 0 Step -1
tiki=0
Shift(Left, 1, DATA_RX)
While Not in_signal: Wend ' Ждем 1
WaitUs 30 ' пауза на часть импульса
While in_signal
Incr tiki: WaitUs 1 ' Пауза 10 мкс
Wend
If tiki >100 Then DATA_RX = DATA_RX Or 1 'длинный -> бит =1
While in_signal: Wend ' Ждем завершения сигнала
Next
Return DATA_RX
End Function
300 байт - что-то многовато, у меня чуть больше 210 с выдачей принятых данных в UART
Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 08:15:50
ARV
aleksandr-zh, при всем уважении: приведенный кусок кода как-то слабо вяжется с RC5.
во-первых, RC5 - это 14-битовый код, у вас же показан прием 8 бит.
во-вторых, мне показалось, что кодирование в вашем примере немного отличается от того, что принято в RC5.
в третьих, я указал байты кода так же вместе с
main(), в которой делается мелкий анализ принятого кода - светодиод моргает.
в четвертых, сомневаюсь, что при использовании
stdio.h для выдачи в UART
printf-ом хоть чего-то объем кода будет меньше килобайта.
в-пятых, 300 байт я указал для ПЕРЕДАТЧИКА, а прием у меня даже больше

ну и наконец, в-шестых, вы привели странный код на каком-то бейсике, возможности которого я никак не могу оценивать - может, это действительно супер-язык, дающий микро-размер кода, однако я делаю свои поделки исключительно на
WinAVR, поэтому сравнение с другими языками некорректно в принципе (еще можно как-то сравнить с другими компиляторами Си). Виденные мною реализации приема RC5 на ассемблере - разговор особый, а на Си - показались гораздо сложнее и навороченнее по тексту исходника, чем мой вариант.
но я не хвалюсь - наверняка кто-то сумеет и лучше сделать (или уже сделал), я не против, я за!

Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 10:32:28
PB_EXPERT
ARV писал(а):может, это действительно супер-язык, дающий микро-размер кода
Здесь вы правы - FastAVR создает прошивки, хорошо оптимизированые по размеру и скорости работы.
Re: ИК пульт управления на AVR
Добавлено: Чт сен 09, 2010 11:43:15
ARV
PB_EXPERT писал(а):Здесь вы правы - FastAVR создает прошивки, хорошо оптимизированые по размеру и скорости работы.
готов признать, но все равно отмечу, что при сравнении разных языков компиляция одного и того же исходника невозможна, а значит, на самом деле сравниваться будут навыки двух программистов, каждый из которых знает свое средство лучше другого. причем один из программистов попадает в заведомо худшие условия, если его исходник второй программист "переводит" на другой язык: второй программист в этом случае сразу может видеть неоптимальности кода первого и автоматически устранять их.
поэтому даже при сравнении программ-аналогов по функциям результаты могут не отражать действительного положения вещей в работе компиляторов.

Re: ИК пульт управления на AVR
Добавлено: Пт сен 10, 2010 11:43:12
ARV
я тут посидел, подумал...
если сделать прием RC5 по принципу
aleksandr-zh, т.е. ожидать прихода ИК-кода (и тем самым не давать ничего делать в программе), то в моей реализации на WinAVR функция ожидания кода занимает всего 50 байт с учетом RET и постоянным сбросом WDT во время ожидания (для attiny2313). вот как эта функция выглядит:
Код: Выделить всё
uint16_t get_ir(void){
uint16_t code = 0;
while(PIND & _BV(PD2)) wdt_reset(); // ждем начала первого импульса
_delay_us(BIT_TIME / 4.0); // ждем, пока пройдет 1/4 часть импульса
for(uint8_t i=0; i < RC5_CODELEN; i++){
wdt_reset();
code <<= 1;
if(!(PIND & _BV(PD2))) code |= 1; // если на входе 0 - значит передается 1
_delay_us(BIT_TIME); // ждем 1778 микросекунд - длительность 1 бита
}
return code;
}
учтите, что различные прерывания, если они есть, искажают точность отработки задержек и поэтому значение BIT_TIME надо соответственно корректировать, иначе приема корректных кодов не будет
ну, кто там что говорил про супер-пупер бейсики?

Re: ИК пульт управления на AVR
Добавлено: Пт сен 10, 2010 12:59:04
PB_EXPERT
ну, кто там что говорил про супер-пупер бейсики
На бейсике можно добится такого же результата, используя функцию
а не изобретая велосипед как в вашем случае!
Re: ИК пульт управления на AVR
Добавлено: Пт сен 10, 2010 13:50:35
ARV
PB_EXPERT писал(а):На бейсике можно добится такого же результата, используя функцию
а не изобретая велосипед как в вашем случае!
да ладно!

по формату функции это скорее ПЕРЕДАЧА кода, а не прием

а кроме того, после того, как я опубликовал код функции, теперь и на Си тот же эффект достигается практически точно так же
речь шла не о том, как в тексте программы это выглядит, а о том, сколько памяти требует.
PB_EXPERT писал(а):FastAVR создает прошивки, хорошо оптимизированые по размеру и скорости работы.
Re: ИК пульт управления на AVR
Добавлено: Пт сен 10, 2010 14:07:32
PB_EXPERT
ARV писал(а):по формату функции это скорее ПЕРЕДАЧА кода, а не прием
Это прием.
ARV писал(а):речь шла не о том, как в тексте программы это выглядит, а о том, сколько памяти требует
Вот асм код функции RC5.
Считайте сколько памяти нужно.
Код: Выделить всё
;////// RC5 receive ///////////////////////
_RC5: sbic PINC,2
rjmp _RC5
ldi zl,2
out TCCR0,zl
ldi r24,0x0e
ldi zl,212
out TCNT0,zl
_RC51: in r25,TCCR0
cpi r25,0x00
brne _RC51
andi zh,0x3f
_RC50: sbis PINC,2
rjmp _RC50
ret
;////// RC5 Ovf0 Interrupt ////////////////
IntN9:
ldi r25,34
out TCNT0,r25
clc
sbic PINC,2
sec
rol zl
rol zh
dec r24
brne _RC52
lsl zl
rol zh
lsl zl
rol zh
lsr zl
lsr zl
out TCCR0,r24
Com zl
Com zh
andi zl,0x3f
sbrs zh,0x07
ser zl
_RC52: reti