реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> алгоритм для записи пульта в AVR, помогите пожалуйста :(
Клим
сообщение May 12 2008, 09:51
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(VAHOO @ May 12 2008, 12:44) *
если я буду брать знаяение TCNTx, мне больше не надо по моему прерывание от таймера и здесь
модуляция ни причем

прерывание от таймера происходит при слишком длительной паузе. По нему определяется окончание посылки.
Про модуляцию я сказал к тому, что длина импульса на выходе из приемника не может быть меньше 26мкс.
Go to the top of the page
 
+Quote Post
VAHOO
сообщение May 12 2008, 09:53
Сообщение #32


Частый гость
**

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



Цитата(adc @ May 12 2008, 13:30) *
А в чем вопрос? Поскольку приемник детектирует сигнал (обрезает засветки и помехи) то на выходе у него последовательность импульсов с интервалами в зависимости от протокола. Достаточно принимаемым контроллером определить присутствие импульсов (вообще любых!!!) и это и будет условием переключения, включения, уменьшения/увеличения яркости.
Уменьшение/увеличение яркости делаем так:
Опрос входа(периодичность хоть 1 сек) на наличие импульсов (любых импульсов) есть значит увеличиваем. Закончились- ждем следущей непрерывной посылки при которой будем уменьшать яркость и т.д.
вход в режим регулировки (чтобы случайно не срабатывало при управлении тв) можно установить по присутствию сигнала с условными интервалами пакетов.
Может вас этот вариант устроит...
Есть только вопрос с пультами которые посылают после отправки команды короткие команды подтверждения.. но думаю можно решить это алгоритмами в контроллере.


нет это не устроивает sad.gif , по моему оптимальный вариант, это сначало записать в EEPROM
а потом сравнить


--------------------
Прошивка это душа микроконтроллера!
Go to the top of the page
 
+Quote Post
Клим
сообщение May 12 2008, 09:58
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(VAHOO @ May 12 2008, 12:53) *
по моему оптимальный вариант, это сначало записать в EEPROM
а потом сравнить

Только ж как будете "сначало записать в EEPROM", сначала примите команду в RAM послностью, а потом уже писать в епром - там задержки большие.
Go to the top of the page
 
+Quote Post
VAHOO
сообщение May 12 2008, 10:04
Сообщение #34


Частый гость
**

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



Цитата(Клим @ May 12 2008, 13:58) *
Только ж как будете "сначало записать в EEPROM", сначала примите команду в RAM послностью, а потом уже писать в епром - там задержки большие.



я так и делаю, только непонимаю почему от расстоянии, пульт от фотоприемника,
паузы между импулсами меняются???
пробал разные пульты.


--------------------
Прошивка это душа микроконтроллера!
Go to the top of the page
 
+Quote Post
Клим
сообщение May 12 2008, 10:13
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(VAHOO @ May 12 2008, 13:04) *
я так и делаю, только непонимаю почему от расстоянии, пульт от фотоприемника,
паузы между импулсами меняются???
пробал разные пульты.

Насколько сильно меняются ?
Осциллограмму в студию smile.gif
Go to the top of the page
 
+Quote Post
VAHOO
сообщение May 12 2008, 11:16
Сообщение #36


Частый гость
**

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



Цитата(Клим @ May 12 2008, 14:13) *
Насколько сильно меняются ?
Осциллограмму в студию smile.gif



сейчас TSOP подключю к саунд карту и в саунд фордже посмотрю и скажу,
по моему идеальный осциллограф smile.gif

Цитата(VAHOO @ May 12 2008, 14:39) *
сейчас TSOP подключю к саунд карту и в саунд фордже посмотрю и скажу,
по моему идеальный осциллограф smile.gif



с расстоянии 5 см между импулсами 1111 мкс, а 1м 1156мкс crying.gif


--------------------
Прошивка это душа микроконтроллера!
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 12 2008, 11:16
Сообщение #37


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Вы читали или не читали мою ссылку? В пустую, что-ли?
Ничего там не меняется. Сто раз делал такие приемники.

Алгоритм простой. Измеряете длительность посылок 0 и 1. Сохраняете эти числа в РАМ. Все. Дальше их можно превратить в код (см. документацию про RC5). А можно и не превращать. Тогда сравнивать одну посылку с другой следует с неким допуском погрешности для измеренных числе.

Задача очень простая.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Клим
сообщение May 12 2008, 11:28
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(VAHOO @ May 12 2008, 14:16) *
сейчас TSOP подключю к саунд карту и в саунд фордже посмотрю и скажу,
по моему идеальный осциллограф smile.gif
с расстоянии 5 см между импулсами 1111 мкс, а 1м 1156мкс crying.gif

Вообще мерять при 5см - это не правильно.
Можно сравнивать метр и 3 метра.
Погрешность в 4% как у вас это вполне приемлимо.
Только вот я не понял, что значит у вас "расстояние между импульсами" ? И какой пульт ? РЦ5?
Go to the top of the page
 
+Quote Post
VAHOO
сообщение May 12 2008, 11:41
Сообщение #39


Частый гость
**

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



Цитата(Клим @ May 12 2008, 15:28) *
Вообще мерять при 5см - это не правильно.
Можно сравнивать метр и 3 метра.
Погрешность в 4% как у вас это вполне приемлимо.
Только вот я не понял, что значит у вас "расстояние между импульсами" ? И какой пульт ? РЦ5?


пульт протокол NEC, а расстояние между пульта и фотоприемника,
паузы между импулсами 1111 мкс (на 5см) и 1156 мкс (на 1м)


Цитата(DpInRock @ May 12 2008, 15:16) *
Вы читали или не читали мою ссылку? В пустую, что-ли?
Ничего там не меняется. Сто раз делал такие приемники.

Алгоритм простой. Измеряете длительность посылок 0 и 1. Сохраняете эти числа в РАМ. Все. Дальше их можно превратить в код (см. документацию про RC5). А можно и не превращать. Тогда сравнивать одну посылку с другой следует с неким допуском погрешности для измеренных числе.

Задача очень простая.


да читал вашу ссылку,

" Измеряете длительность посылок 0 и 1." как?
вот в чем вапрос, у разных пультов разные определение в 0 и 1


--------------------
Прошивка это душа микроконтроллера!
Go to the top of the page
 
+Quote Post
Клим
сообщение May 12 2008, 11:49
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(VAHOO @ May 12 2008, 14:41) *
пульт протокол NEC, а расстояние между пульта и фотоприемника,
паузы между импулсами 1111 мкс (на 5см) и 1156 мкс (на 1м)

Зато длина импульса уменьшится smile.gif
Это вполне нормальные цифры.
Цитата
" Измеряете длительность посылок 0 и 1." как?
вот в чем вапрос, у разных пультов разные определение в 0 и 1

Если вы имеете в виду логический протокол - то забудьте про него. Тут есть выход с приемника у которого - 0 когда идут ИК импульсы с частотой 38кгц и лог.1 - когда не идут. Вот время между сменами состояние и надо мерять. Причем не настолько точно.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 12 2008, 14:32
Сообщение #41


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



У вашего ПРИЕМНИКА определение 0 и 1 соответсвующее ИМЕННО ЭТОМУ приемнику.
Приемник просто демодулирует посылку. А вы превращаете эту посылку в список длительностей.
Скажем, в посылке 30 бит. Значит длина массива с длительностями будет где-нибудь 60 байт. (Первую длинную можно не учитывать, а использовать как признак начала посылки).
Если столько места нет, то превращать эти длительности тупо в биты.
Например, замерили вы следущее:
100, 30, 47, 210, 150 каких нибудь единиц времени.
Видим, что минимальная длительность бита - 30. значит превращаем эти числа в биты:

11101000000011111 - уже намного короче. И делать это можно по ходу действия. Только заранее забить минимальную длительность бита. Можно брать реальную (будет точнее), а можно и от балды.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
domowoj
сообщение May 12 2008, 14:47
Сообщение #42


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



А зачем писать массив?
Можно же сразу анализировать 1 или 0 и писать в память сод посылки.
http://fi-com.ru/mcu/rc5.htm


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 12 2008, 15:20
Сообщение #43


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Можно же сразу анализировать 1 или 0 и писать в память сод посылки.

1. Нам неизвестна природа посылки.
2. Нам неизвестна скорость передачи
3. Единственное, что мы знаем наверняка, это то, что из приемника выходит некая последовательность уровней. Эти последовательности обычно разделены паузой. Все.

Записывая же напрямую битовую последовательность, мы можем напороться (и скорее всего напоремся) на ЛИШНИЕ или недостающие биты (из-за незнания точной скорости и из-за неумение ее точно поддерживать, как нами так и передатчиком).

То, как я описал - я лично делал. Работало со всеми пультами, которые видел приемник. Т.е. обучаемость была очень высокая. С полтыка.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
VAHOO
сообщение May 12 2008, 17:19
Сообщение #44


Частый гость
**

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



Цитата(DpInRock @ May 12 2008, 18:32) *
У вашего ПРИЕМНИКА определение 0 и 1 соответсвующее ИМЕННО ЭТОМУ приемнику.
Приемник просто демодулирует посылку. А вы превращаете эту посылку в список длительностей.
Скажем, в посылке 30 бит. Значит длина массива с длительностями будет где-нибудь 60 байт. (Первую длинную можно не учитывать, а использовать как признак начала посылки).
Если столько места нет, то превращать эти длительности тупо в биты.
Например, замерили вы следущее:
100, 30, 47, 210, 150 каких нибудь единиц времени.
Видим, что минимальная длительность бита - 30. значит превращаем эти числа в биты:

11101000000011111 - уже намного короче. И делать это можно по ходу действия. Только заранее забить минимальную длительность бита. Можно брать реальную (будет точнее), а можно и от балды.


тoгда последовательность будет ВСЕГДА 01010101010101010101010101010101 , по моему,

если не жалко поделитесь с кодом

Сообщение отредактировал VAHOO - May 12 2008, 17:21


--------------------
Прошивка это душа микроконтроллера!
Go to the top of the page
 
+Quote Post
Клим
сообщение May 12 2008, 17:36
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(VAHOO @ May 12 2008, 20:19) *
тoгда последовательность будет ВСЕГДА 01010101010101010101010101010101 , по моему,

если не жалко поделитесь с кодом

Да последоваельность будет именно такая. Только нас интересует длина каждого 0 и каждой диницы.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 15:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016