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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Расшифровка ДУ SONY, понять хочу
ps1x
сообщение Oct 16 2006, 19:48
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Вот есть документик, вроде доступно описывающий этот 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.

Начало правильное?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Oct 16 2006, 20:06
Сообщение #2


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



bb-offtopic.gif
Я все понял, Вы хотите управлять АВР в кастрюле с помощью пульта SONY biggrin.gif
Go to the top of the page
 
+Quote Post
ps1x
сообщение Oct 16 2006, 20:28
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



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

издеваетесь... а по делу можете что нибудь сказать?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Oct 16 2006, 20:53
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(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
Go to the top of the page
 
+Quote Post
singlskv
сообщение Oct 16 2006, 21:27
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Вот примерный алгоритм:
1. настраиваем прерывание Int0 по изменению значения
2. в обработчике Int0 запускаем таймер на 2100мкс
3. если до прерывания таймера опять Int0 то перезапускаем таймер (ловим старт бит) goto2
4. если оказались в прерывании таймера то запрещаем Int0
5. перенастраиваем таймер на 600мкс и ловим наш код пока не поймали весь или
не наткнулись на ошибку
6. Если поймали весь код то выполняем нужные действия.
7. goto 1.
Go to the top of the page
 
+Quote Post
dvm11111111
сообщение Oct 16 2006, 22:00
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-01-06
Пользователь №: 13 567



Лови мож поможет.
Прикрепленные файлы
Прикрепленный файл  ИК1.rar ( 110.64 килобайт ) Кол-во скачиваний: 97
 
Go to the top of the page
 
+Quote Post
ps1x
сообщение Oct 17 2006, 00:55
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(dvm11111111 @ Oct 17 2006, 02:00) *
Лови мож поможет.

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

Тут такой вопрос возник.
1ms=100000us???
А то вышло, что стартовый пульс получается от 220000 до 240000 этих самых US'ов.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Oct 17 2006, 04:57
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Цитата(ps1x @ Oct 17 2006, 06:55) *
Тут такой вопрос возник.
1ms=100000us???

1ms=1000us=1000000ns
Go to the top of the page
 
+Quote Post
ps1x
сообщение Oct 17 2006, 05:37
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(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
Go to the top of the page
 
+Quote Post
AndryG
сообщение Oct 18 2006, 09:59
Сообщение #10


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

Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317



Делал прием пультов 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 --> я там почти всегда
Go to the top of the page
 
+Quote Post
ps1x
сообщение Oct 18 2006, 12:19
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(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
Go to the top of the page
 
+Quote Post
dvm11111111
сообщение Oct 18 2006, 21:59
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-01-06
Пользователь №: 13 567



Цитата(ps1x @ Oct 17 2006, 03:55) *
Цитата(dvm11111111 @ Oct 17 2006, 02:00) *

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

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



Ссылка то битая, зато исходник рабочий, только надо сначала определится какая в пульте кодировка. Исходник заточен под ШИМ 32-х битной посылки.
Go to the top of the page
 
+Quote Post
ps1x
сообщение Oct 19 2006, 13:28
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(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
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Oct 19 2006, 17:48
Сообщение #14


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

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



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


Картинка не очень, снято звуковой картой с помощью фотодиода
Вот еще ссылка: http://www.sbprojects.com/knowledge/ir/sirc.htm
Прикрепленные файлы
Прикрепленный файл  Анализ_кодов.pdf ( 19.27 килобайт ) Кол-во скачиваний: 96
 


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
ps1x
сообщение Oct 19 2006, 18:33
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Цитата(Pyku_He_oTTyda @ Oct 19 2006, 21:48) *
Кстати, вот реальный сигнал с ПДУ SONY от видеокамеры.
А то в статье он не только инвентирован, но и отзеркален


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

Да я понимаю, только вот похоже у меня руки не оттуда, а не у вас smile.gif
Стартовый импульс у меня 240 мс smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:13
Рейтинг@Mail.ru


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