Перейти к содержанию
    

алгоритм для записи пульта в AVR

Всем привет! уже более 3 недели мучаюсь не могу написать код,

делаю выключатель который регулирует яркость и надо

что-бы работал с любым пультом, тоесть надо стачало записать

сигнали от пульта в EEPROM а потом сравнить, делаю проект

на mega88 в CVAVR на языке СИ, протоколы пультов очень много,

если я все протоколы сунул в AVR то место не будет хватать,

у меня алгоритм был такой но корекно не работает,

я записал временные интервалы между импулсами, но

временные интервалы от растояния пульта всегда меняются.

 

буду рад любой информации

 

спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня алгоритм был такой но корекно не работает,

я записал временные интервалы между импулсами, но

временные интервалы от растояния пульта всегда меняются.

Что значит меняется ?

Какой пульт, самое главное, какой приемник ?

И чем записываете ?

Не должно быть настолько больших отклонений в зависимости от расстояния.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет! уже более 3 недели мучаюсь не могу написать код,

делаю выключатель который регулирует яркость и надо

что-бы работал с любым пультом, тоесть надо стачало записать

сигнали от пульта в EEPROM а потом сравнить, делаю проект

на mega88 в CVAVR на языке СИ, протоколы пультов очень много,

если я все протоколы сунул в AVR то место не будет хватать,

у меня алгоритм был такой но корекно не работает,

я записал временные интервалы между импулсами, но

временные интервалы от растояния пульта всегда меняются.

 

буду рад любой информации

 

спасибо!

В китайских выключателях света ,принцип простой.Специально загрубляется чувствительность фотоприемника импульсы с него выпрямляются в логическую 1 и идут на тригер.

Все просто,пульт направляется на выключатель ,фпремник ловит и управляет тригером ,а он тиристором .

 

В китайских выключателях света ,принцип простой.Специально загрубляется чувствительность фотоприемника импульсы с него выпрямляются в логическую 1 и идут на тригер.

Все просто,пульт направляется на выключатель ,фпремник ловит и управляет тригером ,а он тиристором .

Вобщем надо в место тригера всунуть АВР ,который нубудет заморачиватся на код с пульта а будет заниматся регулировкой яркости.

Все равно управлять чем-то одним телевизором или выключателем

Изменено пользователем yarunt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поменяйте батарейки в пульте. Или поменяйте пульт.

А если есть осциллограф, то почему не говорите о том, что вы на нем видите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фотоприемник TSOP4838, подключил к вывду МК INT0,

вот кусок кода

 

Поменяйте батарейки в пульте. Или поменяйте пульт.

А если есть осциллограф, то почему не говорите о том, что вы на нем видите.

 

я настроил UART, и в терминале видно

tu.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

фотоприемник TSOP4838, подключил к вывду МК INT0,

вот кусок кода

я настроил UART, и в терминале видно

Рекомендовал смореть либо на осциллографе либо подключить к компу. А потом уже подключать к контроллеру.

Про батарейки - правильно написано если слабый уровень сигнала - то не все имульсы доходят - и могут быть глюки.

Также важно напряжение питания приемника - на них хоть и пишут 4,5-5,5 - но в действительности даже при 4,5 уже работает гораздо хуже чем при 5. Также экранирование не помешает и фильрация питания - приемник сильно шумат, если к нему, к примеру, палец поднести.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никогда не использовал принт внутри прерывания.

Неизвестно, какое время он отнимает.

И вообще. В прерываниях нужно выполнять только необходимую работу. А смотреть наполнение массива следует в фоне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никогда не использовал принт внутри прерывания.

Неизвестно, какое время он отнимает.

И вообще. В прерываниях нужно выполнять только необходимую работу. А смотреть наполнение массива следует в фоне.

 

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

спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

спасибо!

Алгоритм - мерять длину импульса и длину паузы.

Только для начала сообразить и отладить это все на компе.

А в исходнике у вас черти что творится. И меряется только длина самого имульса - что есть неправильно. Еще, принт в цикле - как отметили выше - тоже неправильно.

Могу предложить такой метод:

1.вешаем приемник на int0 или int1 - прерывание при смене уровня.

2. При лог 0 запускаем таймер

3. при следующем прерывании пишем в массив текущее значение таймера и сбрасываем таймер.

4. выключение таймера и просмотр результата - при переполнении таймера либо при переполнении массива.

5. только после этого вывод результата

Изменено пользователем Клим

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если я все протоколы сунул в AVR то место не будет хватать,

..

буду рад любой информации

все протоколы не "всунете", их ~ 10000 :)

 

граббить нужно только одну посылку. а то мож у вас там сграблено обованными кусками. во вторых, один бит при удержании кнопки всегда меняется от пакета к пакету.

Изменено пользователем VDG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В китайских выключателях света ,принцип простой.Специально загрубляется чувствительность фотоприемника импульсы с него выпрямляются в логическую 1 и идут на тригер.

Все просто,пульт направляется на выключатель ,фпремник ловит и управляет тригером ,а он тиристором .

Вобщем надо в место тригера всунуть АВР ,который нубудет заморачиватся на код с пульта а будет заниматся регулировкой яркости.

Все равно управлять чем-то одним телевизором или выключателем

Ничего не понял. Вернее, то, что удалось выудить из вашего сообщения, выглядит... как бы помягче сказать?.. э-э-э... полной ерундой.

 

делаю выключатель который регулирует яркость и надо

что-бы работал с любым пультом, тоесть надо стачало записать

сигнали от пульта в EEPROM а потом сравнить

То есть, вы пытаетесь сделать "обучаемый" приемник, способный настраиваться на любой ИК пульт? Бросьте эту затею, это совершенно точно задача не для начинающих. В общем виде она скорей всего вообще не решается. Вряд ли вы представляете себе, насколько разнообразны ИК протоколы в пультах, поэтому поставили себе задачу, с которой не справитесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что в некоторых протоколах, когда подаете первую посылку, она имеет одни временные интервалы, когда идут следующие (с этой же нажатой клавиши) временные интервалы уже другие. Обычно они инверсные и поэтому если просто тупо записать временные интервалы, то с некоторыми протоколами ничего работать не будет.

Во вторых

все протоколы не "всунете", их ~ 10000

Точно сказать не могу столько их или нет в мире, но могу сказать точно, что на практике, в бытовой аппаратуре чаще всего используется RC-5, и его модификации, да и к тому же количество фирм производящей аппаратуру не так уж и много, поэтому я считаю что все же лучше запихнуть несколько наиболее распространенных модификаций RC5 в AVR и уже не заморачиваться с такой сверхуниверсальностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...