Связь на IR, нужна помощь
#21
Отправлено 09 Июнь 2004 - 12:51
Добавлено спустя 5 минут 22 секунды :
Зинец Виктор
Спасибо, пока хватит, а там посмотрим...
#22
Отправлено 09 Июнь 2004 - 17:30
#25
Отправлено 09 Июнь 2004 - 18:02
А там на чем ни пиши, больше 15 байт не съэкономишь. Контроллер с тремя регистрами - это клиника.
#26
Отправлено 09 Июнь 2004 - 21:32

#27
Отправлено 10 Июнь 2004 - 09:12
есть 3 "строки", на каждой 4 кнопки ("столбцы"); подаешь на "строку" "0" (там вроде все к "1" подтянуто), читаешь порт - если где-то стоят "0" (на линиях, к которым "столбцы" подключены конечно), значит там соотв. кнопка нажата - и так перебираешь все "строки"
#28
Отправлено 10 Июнь 2004 - 09:29
Вчера замутил такую вещь:
Установил PORTB на вход(резисторы подтянул), PORTD на выход...
На PB2 установил ИК приемник (то что на него реагирует контроллер проверено), а на PD2 ИК светодиод (через резистор 470Ом)... В бесконечном цикле делаю так PORTD=~PINB... По идее должен получиться ретранслятор кодов любого (или пости любого) пульта... То есть приемник принимает, а передатчик сразу передает(на частоте 4МГц)... Но этого не происходит

#29
Отправлено 10 Июнь 2004 - 09:53
Добавлено спустя 3 минуты 41 секунду :
т.е. как ты проверяешь?
светодиод не мигает? - так просто глаз не замечает мигания; телевизор не переключается? - так сигнал для него должен быть еще промодулирован 36 кГцами (т.е. если светодиод должен 1 мс в положеннии "вкл", то это значит, что он в течение 1 мс должен мигать с частотой 36 кгц... или 38)
#30
Отправлено 10 Июнь 2004 - 09:59

#31 Гость_AlchemisT._*
Отправлено 10 Июнь 2004 - 11:17
ldi tmp, 0b11111111
out ddrd, tmp
ldi tmp, 0b00000000;
out ddrb, tmp
ldi tmp, 0b11111111
out portb, tmp
так?
а потом
loop:
in tmp,pinb
out portb,tmp
rjmp loop
Такая конструкция просто обязана работать.
offtop: Что-то неладное творится... заходил уже раза 3 и все равно как гость
#32
Отправлено 10 Июнь 2004 - 11:24
вот так (картинка просто для примера):

первая часть полупериода должна к телевизору пойти "вверх ногами"; но кроме того, там не просто в течение (ну сколько там на картинке...) 8 мс светодиод должен светится - в течение этого времени он должен мигать с частотой 38 кГц; там, где график идет поверху - светодиод потушен
Добавлено спустя 8 минут 56 секунд :
т.е. примерно так (нарисовано корявенько и не до конца):

за более красивыми рисунками - в аппноуты атмела про прием и передачу ir
Добавлено спустя 17 минут 9 секунд :
Цитата
я как-то возюкался сзади ноутбука, у него там ir-порт за красным стеклышком; вроде мигнуло что-то внутри: подумал - показалось или блик от окна... опять боковым зрением вижу - мигнуло: начал смотреть - и правда видно как иногда мигает...
а то с схемой своей возился, когда с ir разбирался; включил, пока за пультом тянулся, а "осцилограф" бам - показывает что-то; думал - ну все, глюки очередные начались... пока думал - там опять такой же пакет - просто ir-приемник попал "в зону попадания" ноутбука и что-то от него ловил (я то вообще то думал, что там частоты не такие, как у бытовых ДУ)
#33
Отправлено 10 Июнь 2004 - 13:05
Насколько я понял, надо настроить таймер (или что-то еще) на полупериод частоты (то есть 72КГц) и там где 1(на входе 0) включать/выключать ИК светодиод... Правильно???
Можно присваивать на выход ~(тек_сост)&!(вход), то есть если на входе 0, то !(вход)=1 тогда в зависимости от предыдущего состояния выхода получим либо 0 либо 1, то есть будет мигание с частотой 36КГц... А там где (вход)=1 ниче не будет.....
Как нужно настроить таймер, что бы он срабатывал с частотой 72КГц??? И что такое делитель на таймере? Означает ли это что несущая частота делиться на n(если установить делитель=n)...
#34
Отправлено 10 Июнь 2004 - 13:25
#35
Отправлено 10 Июнь 2004 - 13:48
Цитата
Ты наверное имел в виду 72KHz...
Это получаеться, что приемник преобразовывает импульсы в сплошной сигнал, правильно??? А мне что бы повторить его "код" нужно обратно в импульсы преобразовать???
PS Только я все равно не могу понять почему у меня не загорался светодиод....Пусть он не мигал с нужной частотой, но гореть то он должен был...
#36
Отправлено 10 Июнь 2004 - 14:20
про преобразования - да
про свечение: огрубив можно сказать, что "длина" "1" - ок. 2 мс, длина "0" - 1 мс, длина стартового пика единички или нолика - ну примерно 0,5 мс - может он и горел, да глаз не замечал?..
надо прибором каким-то проверить - я вон вместо осцилографа звуковой картой пользуюсь; прицепить вместо светодиода и посмотреть, есть там что
(на глаз вообще можно сильно ведь ошибаться - я вон когда пробовал ШИМ-ом управлять мотором, так сначала светодиод включал... вроде значения меняю, а яркость не меняется... померял напряжение - а напряжение меняется - не было бы напряжометра, до сих пор бы может разбирался, чего он светит одинаково)
#37
Отправлено 10 Июнь 2004 - 14:27
Спасибо, вечером будем "моргать"... Но про то, что глаз не заметил - сомневаюсь... если смотреть на пульт и нажимать кнопки - все видно... Попробуй взять цифровую камеру и посмотреть через объектив на ИК светодиод - видно если он горит, проверено и не раз...
Добавлено спустя 2 часа 5 минут 50 секунд :
Зинец Виктор
Еще вопросик, как работать с EEPROM???
Если можно пример кода записи/чтения....
И еще, можно ли в EEPROM записать/считать массив данных??? Если можно, то как???
#38
Отправлено 14 Июнь 2004 - 09:12
"Ретранслятор" работает, но есть одно НО - маленький радиус действия (до 1м) в чем может быть причина? Пробовал ставить меньше сопротивление - не помогает... Пробовал ставить транзистор как на схеме http://evm.wallst.ru...n/irda/irxt.htm ... только другой транзистор ставил... Может не тот?
#39
Отправлено 14 Июнь 2004 - 09:49

про eeprom - из под чего (асм, какой си? - в icc avr я просто в хелпе покопался и вычитал... как в асм - в даташите на контроллер должен/может быть пример)
#40
Отправлено 14 Июнь 2004 - 10:12
Пишу в icc avr...
Наверно надо будет попробовать выпаять из пульта ДУ светодиод, и попробовать его..
Виктор, еще одно... Из твоей статьи я понял, что "стандарт" посылки кодов такой:
стартовый бит, потом 3 пакета по 8 бит, где "0" короский импульс, а "1" длинный....
Есть ли еще какие-то стандарты??? И где о них можно почитать(желательно на русском)...
Можно ли придумать более-менее универсальный способ хранения кодов???
То есть в описаных тобой пультах достаточно:
длина стартового бита, длина "1", длина "0", пауза между пакетами, и собственно 3 пакета (3 байта)... При чем первых три параметра для всех кнопок одинаковы....
Добавлено спустя 1 час 21 минуту 28 секунд :
Зинец Виктор
Если интересно, накопал ссылку:
http://www.slydiman....ontrol/irrc.htm