Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Расшифровка ДУ SONY
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ps1x
Вот есть документик, вроде доступно описывающий этот SIRC - Внизу страницы.
На основе этого документа, пытаюсь декодировать сигналы пульта от муз. центра sony.
Подключен приемник к ноге INT0 и ноге PORTA.6 МК TINY26.

1) Ждем прерывания
2) Пришло прерывание - запрещаем прерывания и вызываем функцию GetCode();

Функция GetCode();

1) Выполняем цикл

Код
while (PORTA.6) {
        i++;
        delay_us(10);
    };

2) Затем смотрим какой длины была задержка на основании подсчитанного i.
Код
if (21> i) return (0xFF);
if (30 < i) return (0xFF);

3) Если задержка не соответствует временному интервалу, значит ошибка и возвращаем 0xFF.

Начало правильное?
singlskv
bb-offtopic.gif
Я все понял, Вы хотите управлять АВР в кастрюле с помощью пульта SONY biggrin.gif
ps1x
Цитата(singlskv @ Oct 17 2006, 00:06) *
bb-offtopic.gif
Я все понял, Вы хотите управлять АВР в кастрюле с помощью пульта SONY biggrin.gif

издеваетесь... а по делу можете что нибудь сказать?
singlskv
Цитата(ps1x @ Oct 17 2006, 00:28) *
Цитата(singlskv @ Oct 17 2006, 00:06) *

bb-offtopic.gif
Я все понял, Вы хотите управлять АВР в кастрюле с помощью пульта SONY biggrin.gif

издеваетесь... а по делу можете что нибудь сказать?

шучу smile.gif
По делу:
Цитата(ps1x @ Oct 16 2006, 23:48) *
Подключен приемник к ноге INT0 и ноге PORTA.6 МК TINY26.

1) Ждем прерывания
2) Пришло прерывание - запрещаем прерывания и вызываем функцию GetCode();

Функция GetCode();

1) Выполняем цикл

Код
while (PORTA.6) {
        i++;
        delay_us(10);
    };

2) Затем смотрим какой длины была задержка на основании подсчитанного i.
Код
if (21> i) return (0xFF);
if (30 < i) return (0xFF);

3) Если задержка не соответствует временному интервалу, значит ошибка и возвращаем 0xFF.

ИМХО, какой-то довольно кривой способ определения задержки, цикл while() {...} с задержкой
delay_us() внутри ни к чему хорошему Вас не приведет, особенно на C.
Нужно пользоваться таймерами.

P.S. Здесь недавно обсуждался прием RC5, так вот некоторые приемы можно перенести и для SIRC
singlskv
Вот примерный алгоритм:
1. настраиваем прерывание Int0 по изменению значения
2. в обработчике Int0 запускаем таймер на 2100мкс
3. если до прерывания таймера опять Int0 то перезапускаем таймер (ловим старт бит) goto2
4. если оказались в прерывании таймера то запрещаем Int0
5. перенастраиваем таймер на 600мкс и ловим наш код пока не поймали весь или
не наткнулись на ошибку
6. Если поймали весь код то выполняем нужные действия.
7. goto 1.
dvm11111111
Лови мож поможет.
ps1x
Цитата(dvm11111111 @ Oct 17 2006, 02:00) *
Лови мож поможет.

Там в архиве хтмл файл а в нем ссылка на декодирование. И она битая (.

Тут такой вопрос возник.
1ms=100000us???
А то вышло, что стартовый пульс получается от 220000 до 240000 этих самых US'ов.
kanzler
Цитата(ps1x @ Oct 17 2006, 06:55) *
Тут такой вопрос возник.
1ms=100000us???

1ms=1000us=1000000ns
ps1x
Цитата(kanzler @ Oct 17 2006, 08:57) *
Цитата(ps1x @ Oct 17 2006, 06:55) *

Тут такой вопрос возник.
1ms=100000us???

1ms=1000us=1000000ns

А в библиотеке CVAVR delay.h delay_us это именно us? А то странный рез-тат получается по "даташиту" на стандарт ду сони стартовый пульс около 2,4 мс а у меня выходит 240 мс blink.gif
AndryG
Делал прием пультов SONY (SIRC) работала сия штука...

Примерный алгоритм...
настраиваем вн. прерывание на 1->0
при сработке прерывания: запускаем таймер, он будет считать тики T, и перестраиваем прерывание на ->1

При следующей сработке прерывания (конец импульса): останавливаем таймер, перестраиваем прерывание на 1-> 0; смотрим. сколько было тиков, если 4 - начало посылки - обнуляем аккумулятор посылки, и сбрасываем счетчик битов = 1 (стартовый принят).
Дальше смотрим счетчик битов, если от 1 до 13 - тело посылки, смотрим сколько было тиков (1 или 2) и пишем в аккумулятор 1 либо 0.
Если битов уже 13 - значит все принято.

Исходники должны дома лежать... завтра постараюсь выложить на http://AndryG.ho.com.ua ... в крайнем случае послезавтра -> 20 числа.

Если есть вопросы -> милости просим на http://remexpert.com --> я там почти всегда
ps1x
Цитата(AndryG @ Oct 18 2006, 13:59) *
Делал прием пультов SONY (SIRC) работала сия штука...

Примерный алгоритм...
настраиваем вн. прерывание на 1->0
при сработке прерывания: запускаем таймер, он будет считать тики T, и перестраиваем прерывание на ->1

При следующей сработке прерывания (конец импульса): останавливаем таймер, перестраиваем прерывание на 1-> 0; смотрим. сколько было тиков, если 4 - начало посылки - обнуляем аккумулятор посылки, и сбрасываем счетчик битов = 1 (стартовый принят).
Дальше смотрим счетчик битов, если от 1 до 13 - тело посылки, смотрим сколько было тиков (1 или 2) и пишем в аккумулятор 1 либо 0.
Если битов уже 13 - значит все принято.

Исходники должны дома лежать... завтра постараюсь выложить на http://AndryG.ho.com.ua ... в крайнем случае послезавтра -> 20 числа.

Если есть вопросы -> милости просим на http://remexpert.com --> я там почти всегда

Спасибо, буду ждать smile.gif
dvm11111111
Цитата(ps1x @ Oct 17 2006, 03:55) *
Цитата(dvm11111111 @ Oct 17 2006, 02:00) *

Лови мож поможет.

Там в архиве хтмл файл а в нем ссылка на декодирование. И она битая (.



Ссылка то битая, зато исходник рабочий, только надо сначала определится какая в пульте кодировка. Исходник заточен под ШИМ 32-х битной посылки.
ps1x
Цитата(AndryG @ Oct 18 2006, 13:59) *
Делал прием пультов SONY (SIRC) работала сия штука...

Примерный алгоритм...
настраиваем вн. прерывание на 1->0
при сработке прерывания: запускаем таймер, он будет считать тики T, и перестраиваем прерывание на ->1

При следующей сработке прерывания (конец импульса): останавливаем таймер, перестраиваем прерывание на 1-> 0; смотрим. сколько было тиков, если 4 - начало посылки - обнуляем аккумулятор посылки, и сбрасываем счетчик битов = 1 (стартовый принят).
Дальше смотрим счетчик битов, если от 1 до 13 - тело посылки, смотрим сколько было тиков (1 или 2) и пишем в аккумулятор 1 либо 0.
Если битов уже 13 - значит все принято.

Исходники должны дома лежать... завтра постараюсь выложить на http://AndryG.ho.com.ua ... в крайнем случае послезавтра -> 20 числа.

Если есть вопросы -> милости просим на http://remexpert.com --> я там почти всегда


Файл не найден 404 sad.gif
Pyku_He_oTTyda
Кстати, вот реальный сигнал с ПДУ SONY от видеокамеры.
А то в статье он не только инвентирован, но и отзеркален


Картинка не очень, снято звуковой картой с помощью фотодиода
Вот еще ссылка: http://www.sbprojects.com/knowledge/ir/sirc.htm
ps1x
Цитата(Pyku_He_oTTyda @ Oct 19 2006, 21:48) *
Кстати, вот реальный сигнал с ПДУ SONY от видеокамеры.
А то в статье он не только инвентирован, но и отзеркален


Картинка не очень, снято звуковой картой с помощью фотодиода
Вот еще ссылка: http://www.sbprojects.com/knowledge/ir/sirc.htm

Да я понимаю, только вот похоже у меня руки не оттуда, а не у вас smile.gif
Стартовый импульс у меня 240 мс smile.gif
Pyku_He_oTTyda
не, 2,4 мс. Мне надо было имитировать несколько команд ПДУ (те, которые на вложении), так как немного запутался в описаниях (в реальной битности сигналов), снял последовательность подручными средствами. Добавлю, что присуствует модуляция положительных уровней частотой 40 кГц.
Если вам необходимо только декодировать, то на заполнение не нужно обращать внимание, ее вычистит приемник. Кстати, бывают приемники, которые инвертируют сигнал, так что не лишне проверить осцилографом, что реально на выходе ИК приемника
Георгий
Цитата(Pyku_He_oTTyda @ Oct 20 2006, 09:04) *
не, 2,4 мс. Мне надо было имитировать несколько команд ПДУ (те, которые на вложении), так как немного запутался в описаниях (в реальной битности сигналов), снял последовательность подручными средствами. Добавлю, что присуствует модуляция положительных уровней частотой 40 кГц.
Если вам необходимо только декодировать, то на заполнение не нужно обращать внимание, ее вычистит приемник. Кстати, бывают приемники, которые инвертируют сигнал, так что не лишне проверить осцилографом, что реально на выходе ИК приемника

Вот пример реальной команды START пульта Sony RMT814. Все таки старт 2,4 мс
VitPushchin
Тут есть пример декодирования очень похожего протокола:
http://electronix.ru/forum/index.php?showt...0934&st=51#
=GM=
Парни, извините, немного не в тему. Где бы найти описание команд пульта DAEWOO? Перерыл весь инет, не могу найти. Пропал пульт от цифрового ТВ приемника, не спутникового, а наземного. Боюсь, жена случайно выкинула в бин(:-(. Теперь могу смотреть только одну программу...
AndryG
http://andryg.ho.com.ua/index.php?p=sirc - исходники работающего примера для пульта Sony. Всё откоментировано.
Mixal_
Цитата(=GM= @ Oct 23 2006, 19:48) *
Парни, извините, немного не в тему. Где бы найти описание команд пульта DAEWOO? Перерыл весь инет, не могу найти. Пропал пульт от цифрового ТВ приемника, не спутникового, а наземного. Боюсь, жена случайно выкинула в бин(:-(. Теперь могу смотреть только одну программу...


посмотрите на http://lirc.sourceforge.net/remotes/ мож найдёте файлы с кодами...
на http://winlirc.sourceforge.net можете скачать прогу с исходниками и эмулировать пульт.
Этой же прогой я анализировал коды пультов...
=GM=
Цитата(Mixal_ @ Oct 24 2006, 17:36) *
Цитата(=GM= @ Oct 23 2006, 19:48) *

Парни, извините, немного не в тему. Где бы найти описание команд пульта DAEWOO? Перерыл весь инет, не могу найти. Пропал пульт от цифрового ТВ приемника, не спутникового, а наземного. Боюсь, жена случайно выкинула в бин(:-(. Теперь могу смотреть только одну программу...


посмотрите на http://lirc.sourceforge.net/remotes/ мож найдёте файлы с кодами...
на http://winlirc.sourceforge.net можете скачать прогу с исходниками и эмулировать пульт.
Этой же прогой я анализировал коды пультов...

С первого захода прямо в точку! У меня DS608P. Спасибо огромное. Эмуляция пульта, как мне кажется, лишнее. Буду думать как изготовить свой пульт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.