ИК пульт управления на AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 7
Зарегистрирован: Ср авг 25, 2010 14:34:41

Сообщение Skiludr »

Моя задумка такова: хочу сделать пульт управления на основе ИК диодов. Передатчик либо обычный пульт от бытовой техники либо схемка на AVR. А приемник, это схемка с фотоприемником и AVR, схема приемника должна при нажатии кнопки на пульте включать нагрузку т.е. 1 на лапке микроконтроллера. Помогите реализовать или подскажите как это сделать!
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 327
Зарегистрирован: Пн авг 25, 2008 10:24:51
Откуда: Россия, Магадан

Сообщение belyay »

Реклама
Родился
Сообщения: 7
Зарегистрирован: Ср авг 25, 2010 14:34:41

Сообщение Skiludr »

Хотелось бы что-о более конкретное, рабочий проект например))
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

Прошивку для RC5 приёмника и передатчика, можно сделать в среде BASCOM
Для приёмника используется команда GETRC5, а для передатчика - RC5SEND
Примеры есть в хелпе баскома.
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Сообщения: 986
Зарегистрирован: Ср июл 07, 2010 06:48:57

Сообщение Anode_Katode »

PB_EXPERT писал(а):Прошивку для RC5 приёмника и передатчика, можно сделать в среде BASCOM
Для приёмника используется команда GETRC5, а для передатчика - RC5SEND
Да, есть такие команды. Только почему-то далеко не все пульты воспринимают :(
Для сравнения я сделал вот такой девайс: http://radioded.ru/content/view/129/1/ и собственную штуковину на меге8 с прошивкой на бейсике. В результате из 8 пультов схема на тиньке13 приняла 7, а мега на бейсике всего 5.
ИК приемники одинаковые стояли, тактовая частота МК тоже одинаковая была.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1306
Зарегистрирован: Вс янв 18, 2009 20:51:02

Сообщение ooogo »

может тут найдете чего подходящего http://radiokot.ru/forum/viewtopic.php? ... 61&start=0
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 596
Зарегистрирован: Пн окт 06, 2008 19:47:07
Откуда: Донбасс. г. Луганск

Сообщение lluganet »

http://aes.at.ua/publ/31-5-2
там есть несколько разных и довольно простых устройств с обучением под пульт
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение aleksandr-zh »

Skiludr писал(а):Моя задумка такова: хочу сделать пульт управления на основе ИК диодов. Передатчик либо обычный пульт от бытовой техники либо схемка на AVR. А приемник, это схемка с фотоприемником и AVR, схема приемника должна при нажатии кнопки на пульте включать нагрузку т.е. 1 на лапке микроконтроллера. Помогите реализовать или подскажите как это сделать!
я делал это
часть кода тут
http://bascomavr.3bb.ru/viewtopic.php?id=287

если есть вопросы - в личку
Встал на лапы
Аватара пользователя
Сообщения: 95
Зарегистрирован: Сб мар 01, 2008 12:27:44

Сообщение Alex Medvedev »

Я собирал вот такой пультик http://avrdevices.ru/ik-pulyt/
Посмотри может поможет. Протокол RC5 только у меня там бит toggle не используется. Лень было заморачиваться =)
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

Сообщение Секретный кот »

Anode_Katode писал(а):Да, есть такие команды. Только почему-то далеко не все пульты воспринимают :(
Может, потому что далеко не все пульты – RC5? :)))
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Держит паяльник хвостом
Сообщения: 986
Зарегистрирован: Ср июл 07, 2010 06:48:57

Сообщение Anode_Katode »

Секретный кот писал(а):Может, потому что далеко не все пульты – RC5?
Ах, если бы, ах если бы...
К сожалению, проверялись гарантировано RC5.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

а я сейчас завершаю тестирование своей собственной библиотечки WinAVR для приема-передачи RC5. пока тесты очень положительные результаты дают. передача требует порядка 300 байт flash-памяти AVR, а прием - порядка 700, т.е. можно даже на тини13 делать девайсы.
как закончу тестирование - опубликую на своем сайте :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Сообщение 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
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aleksandr-zh, при всем уважении: приведенный кусок кода как-то слабо вяжется с RC5.

во-первых, RC5 - это 14-битовый код, у вас же показан прием 8 бит.
во-вторых, мне показалось, что кодирование в вашем примере немного отличается от того, что принято в RC5.
в третьих, я указал байты кода так же вместе с main(), в которой делается мелкий анализ принятого кода - светодиод моргает.
в четвертых, сомневаюсь, что при использовании stdio.h для выдачи в UART printf-ом хоть чего-то объем кода будет меньше килобайта.
в-пятых, 300 байт я указал для ПЕРЕДАТЧИКА, а прием у меня даже больше :)))
ну и наконец, в-шестых, вы привели странный код на каком-то бейсике, возможности которого я никак не могу оценивать - может, это действительно супер-язык, дающий микро-размер кода, однако я делаю свои поделки исключительно на WinAVR, поэтому сравнение с другими языками некорректно в принципе (еще можно как-то сравнить с другими компиляторами Си). Виденные мною реализации приема RC5 на ассемблере - разговор особый, а на Си - показались гораздо сложнее и навороченнее по тексту исходника, чем мой вариант.

но я не хвалюсь - наверняка кто-то сумеет и лучше сделать (или уже сделал), я не против, я за! :beer:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

ARV писал(а):может, это действительно супер-язык, дающий микро-размер кода
Здесь вы правы - FastAVR создает прошивки, хорошо оптимизированые по размеру и скорости работы.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

PB_EXPERT писал(а):Здесь вы правы - FastAVR создает прошивки, хорошо оптимизированые по размеру и скорости работы.
готов признать, но все равно отмечу, что при сравнении разных языков компиляция одного и того же исходника невозможна, а значит, на самом деле сравниваться будут навыки двух программистов, каждый из которых знает свое средство лучше другого. причем один из программистов попадает в заведомо худшие условия, если его исходник второй программист "переводит" на другой язык: второй программист в этом случае сразу может видеть неоптимальности кода первого и автоматически устранять их.

поэтому даже при сравнении программ-аналогов по функциям результаты могут не отражать действительного положения вещей в работе компиляторов. :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение 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 надо соответственно корректировать, иначе приема корректных кодов не будет

ну, кто там что говорил про супер-пупер бейсики? ;)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

ну, кто там что говорил про супер-пупер бейсики
На бейсике можно добится такого же результата, используя функцию

Код: Выделить всё

RC5(Adr, Com)
а не изобретая велосипед как в вашем случае!
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

PB_EXPERT писал(а):На бейсике можно добится такого же результата, используя функцию

Код: Выделить всё

RC5(Adr, Com)
а не изобретая велосипед как в вашем случае!
да ладно! :)))
по формату функции это скорее ПЕРЕДАЧА кода, а не прием :)))
а кроме того, после того, как я опубликовал код функции, теперь и на Си тот же эффект достигается практически точно так же

Код: Выделить всё

get_ir()
:)))

речь шла не о том, как в тексте программы это выглядит, а о том, сколько памяти требует.
PB_EXPERT писал(а):FastAVR создает прошивки, хорошо оптимизированые по размеру и скорости работы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение 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
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»