|
|
  |
алгоритм для записи пульта в AVR, помогите пожалуйста :( |
|
|
|
May 11 2008, 19:04
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 22-09-05
Пользователь №: 8 834

|
Всем привет! уже более 3 недели мучаюсь не могу написать код, делаю выключатель который регулирует яркость и надо что-бы работал с любым пультом, тоесть надо стачало записать сигнали от пульта в EEPROM а потом сравнить, делаю проект на mega88 в CVAVR на языке СИ, протоколы пультов очень много, если я все протоколы сунул в AVR то место не будет хватать, у меня алгоритм был такой но корекно не работает, я записал временные интервалы между импулсами, но временные интервалы от растояния пульта всегда меняются.
буду рад любой информации
спасибо!
--------------------
Прошивка это душа микроконтроллера!
|
|
|
|
|
May 11 2008, 19:28
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 22-09-05
Пользователь №: 8 834

|
Цитата(DpInRock @ May 11 2008, 23:25)  У вас осциллограф есть? да, конечно есть
--------------------
Прошивка это душа микроконтроллера!
|
|
|
|
|
May 11 2008, 19:30
|
Местный
  
Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541

|
Цитата(VAHOO @ May 11 2008, 22:04)  у меня алгоритм был такой но корекно не работает, я записал временные интервалы между импулсами, но временные интервалы от растояния пульта всегда меняются. Что значит меняется ? Какой пульт, самое главное, какой приемник ? И чем записываете ? Не должно быть настолько больших отклонений в зависимости от расстояния.
|
|
|
|
|
May 11 2008, 19:44
|

Местный
  
Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476

|
Цитата(VAHOO @ May 11 2008, 22:04)  Всем привет! уже более 3 недели мучаюсь не могу написать код, делаю выключатель который регулирует яркость и надо что-бы работал с любым пультом, тоесть надо стачало записать сигнали от пульта в EEPROM а потом сравнить, делаю проект на mega88 в CVAVR на языке СИ, протоколы пультов очень много, если я все протоколы сунул в AVR то место не будет хватать, у меня алгоритм был такой но корекно не работает, я записал временные интервалы между импулсами, но временные интервалы от растояния пульта всегда меняются.
буду рад любой информации
спасибо! В китайских выключателях света ,принцип простой.Специально загрубляется чувствительность фотоприемника импульсы с него выпрямляются в логическую 1 и идут на тригер. Все просто,пульт направляется на выключатель ,фпремник ловит и управляет тригером ,а он тиристором . Цитата(yarunt @ May 11 2008, 22:35)  В китайских выключателях света ,принцип простой.Специально загрубляется чувствительность фотоприемника импульсы с него выпрямляются в логическую 1 и идут на тригер. Все просто,пульт направляется на выключатель ,фпремник ловит и управляет тригером ,а он тиристором . Вобщем надо в место тригера всунуть АВР ,который нубудет заморачиватся на код с пульта а будет заниматся регулировкой яркости. Все равно управлять чем-то одним телевизором или выключателем
Сообщение отредактировал yarunt - May 11 2008, 19:36
--------------------
|
|
|
|
|
May 11 2008, 19:51
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 22-09-05
Пользователь №: 8 834

|
фотоприемник TSOP4838, подключил к вывду МК INT0, вот кусок кода Цитата(DpInRock @ May 11 2008, 23:46)  Поменяйте батарейки в пульте. Или поменяйте пульт. А если есть осциллограф, то почему не говорите о том, что вы на нем видите. я настроил UART, и в терминале видно
Прикрепленные файлы
tu.rar ( 1.56 килобайт )
Кол-во скачиваний: 74
--------------------
Прошивка это душа микроконтроллера!
|
|
|
|
|
May 11 2008, 20:00
|
Местный
  
Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541

|
Цитата(VAHOO @ May 11 2008, 22:51)  фотоприемник TSOP4838, подключил к вывду МК INT0, вот кусок кода я настроил UART, и в терминале видно Рекомендовал смореть либо на осциллографе либо подключить к компу. А потом уже подключать к контроллеру. Про батарейки - правильно написано если слабый уровень сигнала - то не все имульсы доходят - и могут быть глюки. Также важно напряжение питания приемника - на них хоть и пишут 4,5-5,5 - но в действительности даже при 4,5 уже работает гораздо хуже чем при 5. Также экранирование не помешает и фильрация питания - приемник сильно шумат, если к нему, к примеру, палец поднести.
|
|
|
|
|
May 11 2008, 20:20
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 22-09-05
Пользователь №: 8 834

|
Цитата(DpInRock @ May 12 2008, 00:10)  Никогда не использовал принт внутри прерывания. Неизвестно, какое время он отнимает. И вообще. В прерываниях нужно выполнять только необходимую работу. А смотреть наполнение массива следует в фоне. скажите пожалуйста, какой нибудь алгоритм что-бы я использовал. спасибо!
--------------------
Прошивка это душа микроконтроллера!
|
|
|
|
|
May 11 2008, 20:51
|
Местный
  
Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541

|
Цитата(VAHOO @ May 11 2008, 23:20)  скажите пожалуйста, какой нибудь алгоритм что-бы я использовал. спасибо! Алгоритм - мерять длину импульса и длину паузы. Только для начала сообразить и отладить это все на компе. А в исходнике у вас черти что творится. И меряется только длина самого имульса - что есть неправильно. Еще, принт в цикле - как отметили выше - тоже неправильно. Могу предложить такой метод: 1.вешаем приемник на int0 или int1 - прерывание при смене уровня. 2. При лог 0 запускаем таймер 3. при следующем прерывании пишем в массив текущее значение таймера и сбрасываем таймер. 4. выключение таймера и просмотр результата - при переполнении таймера либо при переполнении массива. 5. только после этого вывод результата
Сообщение отредактировал Клим - May 11 2008, 20:52
|
|
|
|
|
May 11 2008, 22:52
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(yarunt @ May 12 2008, 05:14)  В китайских выключателях света ,принцип простой.Специально загрубляется чувствительность фотоприемника импульсы с него выпрямляются в логическую 1 и идут на тригер. Все просто,пульт направляется на выключатель ,фпремник ловит и управляет тригером ,а он тиристором . Вобщем надо в место тригера всунуть АВР ,который нубудет заморачиватся на код с пульта а будет заниматся регулировкой яркости. Все равно управлять чем-то одним телевизором или выключателем Ничего не понял. Вернее, то, что удалось выудить из вашего сообщения, выглядит... как бы помягче сказать?.. э-э-э... полной ерундой. Цитата(VAHOO @ May 12 2008, 04:34)  делаю выключатель который регулирует яркость и надо что-бы работал с любым пультом, тоесть надо стачало записать сигнали от пульта в EEPROM а потом сравнить То есть, вы пытаетесь сделать "обучаемый" приемник, способный настраиваться на любой ИК пульт? Бросьте эту затею, это совершенно точно задача не для начинающих. В общем виде она скорей всего вообще не решается. Вряд ли вы представляете себе, насколько разнообразны ИК протоколы в пультах, поэтому поставили себе задачу, с которой не справитесь.
|
|
|
|
|
May 12 2008, 02:47
|

Частый гость
 
Группа: Свой
Сообщений: 128
Регистрация: 21-06-07
Из: Омск
Пользователь №: 28 594

|
Дело в том, что в некоторых протоколах, когда подаете первую посылку, она имеет одни временные интервалы, когда идут следующие (с этой же нажатой клавиши) временные интервалы уже другие. Обычно они инверсные и поэтому если просто тупо записать временные интервалы, то с некоторыми протоколами ничего работать не будет. Во вторых Цитата все протоколы не "всунете", их ~ 10000 Точно сказать не могу столько их или нет в мире, но могу сказать точно, что на практике, в бытовой аппаратуре чаще всего используется RC-5, и его модификации, да и к тому же количество фирм производящей аппаратуру не так уж и много, поэтому я считаю что все же лучше запихнуть несколько наиболее распространенных модификаций RC5 в AVR и уже не заморачиваться с такой сверхуниверсальностью.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|