Формирование ИК-сигнала на ATTiny13

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

Имеется цифровая приставка Electronics EL2102HD
У которой нет ПДУ

на телефон скачал irplus Wave, подключил 2 ик-диода(для частоты 38кГц) к телефону - приставка реагировала на команды с телефона
распаковав приложение на компьютере, нашел xml файл пульта, который реагировал на приставку
вот он:
Спойлер<irplus>
<device manufacturer="UNITED" model="DVB-2" columns="12" format="WINLIRC_NEC1">

<button label="" backgroundColor="FFC84334" span="6">0x00fd 0x9a65</button>
<button label="󿖁" span="6">0x00fd 0xb24d</button>

<button label="1" span="4">0x00fd 0x4ab5</button>
<button label="2" span="4">0x00fd 0x0af5</button>
<button label="3" span="4">0x00fd 0x08f7</button>

<button label="4" span="4">0x00fd 0x6a95</button>
<button label="5" span="4">0x00fd 0x2ad5</button>
<button label="6" span="4">0x00fd 0x28d7</button>

<button label="7" span="4">0x00fd 0x728d</button>
<button label="8" span="4">0x00fd 0x32cd</button>
<button label="9" span="4">0x00fd 0x30cf</button>

<button label="INPUT" span="4">0x00fd 0x52ad</button>
<button label="0" span="4">0x00fd 0xf00f</button>
<button label="RECALL" span="4">0x00fd 0xe817</button>

<button label="GUIDE" span="4">0x00fd 0x48b7</button>
<button label="PAUSE" span="4">0x00fd 0xb04f</button>
<button label="FAV" span="4">0x00fd 0xa857</button>

<button label="EXIT" span="4">0x00fd 0x8877</button>
<button label="" span="4">0x00fd 0x609f</button>
<button label="INFO" span="4">0x00fd 0x708f</button>

<button label="" span="4">0x00fd 0x5aa5</button>
<button label="ENTER" span="4">0x00fd 0x58a7</button>
<button label="" span="4">0x00fd 0xd827</button>

<button label="SUBTITLE" span="4">0x00fd 0x10ef</button>
<button label="" span="4">0x00fd 0x6897</button>
<button label="MENU" span="4">0x00fd 0x8a75</button>

<button label="R" fillColor="FFC84334" span="3">0x00fd 0x629d</button>
<button label="G" fillColor="FF1E7854" span="3">0x00fd 0x22dd</button>
<button label="Y" fillColor="FFD6A81F" span="3">0x00fd 0x20df</button>
<button label="B" fillColor="FF2A4C94" span="3">0x00fd 0xe01f</button>

<button label="AUDIO" span="4">0x00fd 0x12ed</button>
<button label="TEXT" span="4">0x00fd 0xd02f</button>
<button label="DASH" span="4">0x00fd 0x48b7</button>
</device>
</irplus>


Потом через линейный вход записал с телефона аудиосигнал кнопки "ВНИЗ"
Открыл в Audacity и в нем спектр аудио по протоколу NEC соответствует коду кнопке "ВНИЗ" из xml-файла в прямом порядке

Код: Выделить всё

<button label="" span="4">0x00fd 0x6897</button>
^ кнопка "ВНИЗ" из xml

Аудио:
Изображение


Я перепробовал множество вариантов отправки и формирования 38кГц , но приставка так и ни на что не отреагировала(проверял на обычном светодиоде - мк работает, и ставил 3 разных ик-диода, так же их проверял через камеру)

я не пойму- допустим ножка 0 формирует 38 кГц(формировала, проверял в протеусе частотометром, фьюз предделителя/8 выключен)
и в прерывании надо прописывать отключение ШИМ?
а в отправке байтов включать\выключать для формирования импульсов

или вариант
в прерывании отключать ножку ик-диода?
а байты паузами и включениями отправлять в main,while

или байты нужно отправлять в прерывании?

а может я не те байты передаю?
но аудиосигнал точно соответствует байтам(я пробывал и точно как в аудио отправлять, и паузы делать точно как в протоколе описано)
с чужими кодами,вариантами отправки байт и генерацией 38кГц - тоже приставка не реагирует
Последний раз редактировалось unknown99 Ср авг 08, 2018 11:04:01, всего редактировалось 1 раз.
Реклама
Мудрый кот
Сообщения: 1706
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

Я собирал на баском авр,может исходник поможет
СпойлерConfig Pind.2 = Input
Config Portd.3 = Output
'Config Portd.2 = Output-здесь фотоприемник
'Portd.2 = 0
Irrec_pwr Alias Portd.3
Config Timer1 = Timer , Prescale = 8
'Config Timer0 = Timer , Prescale = 64
Config Timer2 = Timer , Prescale = 1 , Compare = Toggle , Clear Timer = 1
Compare2 = 210
Config Portb.3 = Output
Enable Timer1
'Enable Int0
Enable Interrupts
'On Timer0 Tikers 'work on timer
On Timer1 Period5625
'On Int0 Infrared 'work on interruption
'Dim Tik As Word 'counter of teaks of timer
Dim Byt As Byte
Dim Flag As Bit 'counter accepted bit
Dim X As Byte
'Dim Start_flag As Bit 'flag of start condition
Dim Address As Byte 'byte of address
Dim Command As Byte 'byte of command
Dim Command_ As Byte 'direct byte of command
Dim Address_ As Byte 'indirect byte of address
''Dim Command_0 As Byte 'indirect byte of command
'Dim Summa As Word
Command = 0
Address = 2
Flag = 0
Byt = 0
Stop Timer1
'Start Timer2
' Wait 2
Do 'Main cycle

Gosub Form

Incr Command
Waitms 500

Loop
End

Form:
'формирование посылки
Command_ = 255 - Command
Address_ = 255 - Address
Gosub Imp_start1
Gosub Imp_start0
Byt = Address
Gosub Peredacha8bit
Byt = Address_
Gosub Peredacha8bit
Byt = Command
Gosub Peredacha8bit
Byt = Command_
Gosub Peredacha8bit

Return



Peredacha8bit:
For X = 0 To 7
If Byt.x = 0 Then
Gosub Imp_1_562usek
Gosub Imp_0_562usek
Else
Gosub Imp_1_562usek
Gosub Imp_0_1687usek
End If
Next X
Return


Imp_start1:
'передаем старт 9 мс
Flag = 0
Timer1 = 47536
'Timer0 = T0 'Delay 10 en
Start Timer1
Start Timer2
While Flag = 0
'Flag = 0
Wend
Stop Timer2
Stop Timer1
Portb.3 = 0
Return

Imp_start0:
'+пауза 4,5 мс
Flag = 0
Timer1 = 56536
Stop Timer2
Start Timer1
While Flag = 0

Wend
Stop Timer1
Return

Imp_1_562usek:
'импульс 562,5 мкс
Flag = 0
Timer1 = 64411
Start Timer1
Start Timer2
While Flag = 0

Wend
Stop Timer2
Stop Timer1
Portb.3 = 0
Return

Imp_0_562usek:
'пауза 562,5 мкс
Flag = 0
Timer1 = 64411
Stop Timer2
Start Timer1
While Flag = 0

Wend
Stop Timer2
Stop Timer1
Portd.3 = 0
Return

Imp_0_1687usek:
'пауза 1687,5 мкс
Flag = 0
Timer1 = 62161
Stop Timer2 'Delay 10 en
Start Timer1
While Flag = 0
'Flag = 0
Wend
Stop Timer1
Portd.3 = 0
Return




Startimpuls:

Period5625:
Portb.3 = 0

Flag = 1
'Incr Byt
'Timer1 = 56536 '31250/(256-253)=10416,66 Hz (96 een)

'Start Timer1
'Start Timer0
Return
Добавлено after 16 minutes 44 seconds:
таймер1 настраиваем на частоту 2 мгц (у меня мега8,кварц 16 мгц)-предделитель на 8-
Config Timer1 = Timer , Prescale = 8
таймер2 формирует 38 кгц (или около того)
сначала светодиод посылет посылку 9 мсек (Imp_start1)-
(65535- 47536)/2000000=0,0089995 сек
потом молчим 4,5 сек (Imp_start0)-
(65535-56536)/2000000=0,0044995 сек
а потом посылки-
1)адресс
2)инверсия адреса(=255-адресс)
3)комманда
4)инверсия комманды(=255-комманда)
все 4 посылки отправляем младшим битом вперед,если там 0 то светодиод горит 562 мксек потом негорит 562 мксек,а если ноль то горит 562 мксек,потом не горит 1687 мксек
под словом "горит" подразумевается запуск таймера2

Добавлено after 3 minutes 56 seconds:
здесь нет ошибки?
0,0,0,0,
0,0,0,0,
1,1,1,1,
1,1,0,1,
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15600
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Там ведь не просто несущая частота, а еще и модуляция должна быть...
Может вот такую схемку поставить..?
http://img.radiokot.ru/files/20529/r2u6lo2fd.GIF
от МК только модулирующий сигнал нужен (в автономном режиме эта схемка работает как ИК датчик "на отражение").
:dont_know:
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

Novice user, а что делается внутри таймера 2?
0,0,0,0,
0,0,0,0,
1,1,1,1,
1,1,0,1
нет, нету
так как это 00FD (возможно 16ти-битный адрес, расшир NEC)

а может нули не надо передавать, но опять в аудио так


BOB51, а без лишних схемок?
с лишними схемками и я с телефона могу управлять с ОУ
на аттини и начал делать, чтоб лишних нагромождений не было
я уже ничегоне понимаю, голова раскалывается

модулирующий - это типа такой?
Изображение

и его надо как то связать с несущей частотой?

____________
или таким должен быть сигнал?
Изображение
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

посмотрите, как сделано у меня вот в этой статье: https://simple-devices.ru/prj/9-electr/ ... te-control в конце там есть архивы с исходниками. то, что коды RC5 пусть вас не смущает, просто посмотрите, как я сделал модуляцию и т.п. (схему пульта, например).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1706
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

[uquote="unknown99",url="/forum/viewtopic.php?p=3433677#p3433677"]Novice user, а что делается внутри таймера 2?[/uquote]
просто переключается PORTB3,с частотой 16000000/210/2=380952,38 гц
попробуйте сделать так-
0,0,0,0,
0,0,1,0,
1,1,1,1,
1,1,0,1
иначе это не протокол NEC,а какой то другой
Реклама
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

наверное я напутал что-то с байтами

расширенная версия NEC:
команда же инвертируется значит -2 байта (97+инверт 97)

осталось 2 байта, старший и младший:
FD 58

наверное не надо нули отправлять
походу да
я не отправляю инвертированную команду
Мудрый кот
Сообщения: 1706
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

точно,расширенная NEC,а нех есть?
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

Novice user, HEX я взял с xml файла
там HEX - 00FD 6897 - в первом посте указал
не знаю насколько это правдивый код
может приложение что то с ним делает, но опять же, повторюсь - в аудио этот код так и идет по порядку, но не стоит думаю этому доверять

и надо ли теперь отправлять младший байт первым
или тут уже указан младший байт первым
Мудрый кот
Сообщения: 1706
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

и еще-поставьте задержку
while (1)
{

nec1();
//задержка пару сек
}

}
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

ARV, не могли бы вы больше не быть гомиком?
Последний раз редактировалось unknown99 Ср авг 08, 2018 11:13:15, всего редактировалось 2 раза.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

[uquote="unknown99",url="/forum/viewtopic.php?p=3433528#p3433528"]подключил 2 ик-диода(для частоты 38кГц) к телефону - приставка реагировала на команды с телефона[/uquote]
Может пригодится. Есть программка DvzRcEditor, в ней поддержка своего пульта, сделанного на ATtiny2313 - документация выводится прямо из программы (вкладка "пульт-брелок") - есть схема, описание, печатная плата лут под готовый корпус. Программа сама формирует бинарник для прошивки ATtiny2313.
http://www.getchip.net/posts/077-zapis- ... uyu-kartu/
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

oleg110592, спасибо
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вс май 14, 2017 17:12:30

Сообщение unknown99 »

Дело было в отправке байтов
Аудио-сигнал был абсолютно правильным

Необходимо было отправлять в таком RAW-формате
Ответить

Вернуться в «AVR»