очень себе таки и можно.....например повесить на АЦП или на компаратор ... или на ногу захвата таймера.....это всё тоже косвенные возможности реагировать мгновенно на внешнее событие
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
Заголовок сообщения: Re: RC-5 без использования внешнего прерывания (?)
Добавлено: Вс авг 05, 2012 04:33:48
Встал на лапы
Зарегистрирован: Чт мар 05, 2009 08:15:25 Сообщений: 93
Рейтинг сообщения:0
Ясно, спасибо... Просто до паяльника смогу добраться только в конце недели, а железка лежит себе рядом, так и просит запрограммироваться. Только вот ИК-датчик повесил по дурости куда придется, а не на прерывание...
можно программно - заводите опорный таймер на 10..50кГц и в прерывании опрашивайте вход. считайте длительность постоянного уровня до изменения на входе, эти длительности декодируйте в 0/1 и складывайте в буфер. по заполнению буфера нужным числом перепадов - получите код посылки.
можно программно - заводите опорный таймер на 10..50кГц и в прерывании опрашивайте вход. считайте длительность постоянного уровня до изменения на входе, эти длительности декодируйте в 0/1 и складывайте в буфер. по заполнению буфера нужным числом перепадов - получите код посылки.
+1 Я именно так и делал. Мало того, если контроллер особо ни чего не делает, просто дождаться команды и чегото там вкл\выкл, то можно и без таймера, прям в основном цикле задержками организовать опрос входа и обработку данных.
С RC5 еще не сталкивался, но Sony (протокол SIRC), и Samsung (протокол NEC/JVC или похожий) декодируется на ура. Можно сделать дополнительную прослойку-декодер в общую кодировку - тогда можно совместить в одном куске работу с пульта и локальной клавиатуры.
Заголовок сообщения: Re: RC-5 без использования внешнего прерывания (?)
Добавлено: Вс авг 05, 2012 20:09:06
Встал на лапы
Зарегистрирован: Чт мар 05, 2009 08:15:25 Сообщений: 93
Рейтинг сообщения:0
МК 8535, порты внешних прерываний не заняты, но по глупости при проектировке запаял дитчик не туда. А до паяльника смогу добраться только к середине недели...
МК 8535, порты внешних прерываний не заняты, но по глупости при проектировке запаял дитчик не туда. А до паяльника смогу добраться только к середине недели...
На какую ногу запаял, какие на ней есть аппаратные функции, может через них можно и аппаратно следить?
Этот пин вроде, можно использовать как внешнее прерывание захвата счетчика таймера1, вектор прерывания TIMER1 CAPT указываешь на свою процедуру, и делай там че хочешь. Ну естественно нужно настроить соотв. регистры управления, чтобы прерывания срабатывали.
Заголовок сообщения: Re: RC-5 без использования внешнего прерывания (?)
Добавлено: Пн авг 06, 2012 14:18:22
Встал на лапы
Зарегистрирован: Чт мар 05, 2009 08:15:25 Сообщений: 93
Рейтинг сообщения:0
Хм... Пульт оказался мертвым... Выдавал всегда только одиночный импульс и не повторялся. Взял другой пульт, он оказался с протоколом NEC. Взял примеры в инете, но ни как не могу победить их. Складывается такое ощущение, что таймер не так запускаю. Подскажите, пожалуйста, ошибку.
// External Interrupt(s) initialization // INT0: On // INT0 Mode: Any change GICR|=0x40; MCUCR=0x01; MCUCSR=0x00; GIFR=0x40;
По закомментированным кускам в прерывании видно, что я пытался отследить, какое значение имеет TCNT0, но он всегда возвращал "0", и в случае TCNT0/10 и в случае TCNT0/100
Подскажите, где я опять споткнулся?
А ещё был бы очень благодарен за ссылку на статью о таймерах и рассчете их таймингов. К примеру, таймер установлен на 15кГц. Это он переполняться будет с частотой 15кГц, или инкрементировать счетчик?
По закомментированным кускам в прерывании видно, что я пытался отследить, какое значение имеет TCNT0, но он всегда возвращал "0", и в случае TCNT0/10 и в случае TCNT0/100
Подскажите, где я опять споткнулся?
А ещё был бы очень благодарен за ссылку на статью о таймерах и рассчете их таймингов. К примеру, таймер установлен на 15кГц. Это он переполняться будет с частотой 15кГц, или инкрементировать счетчик?
Когда таймер ловишь при переполнении, то он всегда будет выдавать "0", потому что он переполнился, по нулю в таймере и определяется его переполнение, тут надо расчитывать значение таймера "от обратного", т.е. 256 минусуем то что нужно и остается столько, сколько нужно записать в TCNT0. Частота таймера: Частота МК делим на прескалер и делим на (256 минус значение TCNT0)
Заголовок сообщения: Re: RC-5 без использования внешнего прерывания (?)
Добавлено: Пн авг 06, 2012 16:08:57
Встал на лапы
Зарегистрирован: Чт мар 05, 2009 08:15:25 Сообщений: 93
Рейтинг сообщения:0
Ловлю не при переполнении таймера, а по внешнему прерываиню, срабатывающему от ИК-датчика. Там по коду даже мне понятно как устроено, только вот не работает ни черта
Какая частота МК и что за МК? А то вот эти две вещи как-то несовместимы: .... if (evt_cnt == 0) TCCR0=4; //Если первое событие включаем счетчик, 15.625КГц .... TCCR2=0b00000100; //250 kHz ....
ATmega16 прескалер для таймера0, таймера1: 001=1:1, 010=1:8, 011=1:64, 100=1:256, 101=1:1024
прескалер для таймера2: 001=1:1, 010=1:8, 011=1:32, 100=1:64, 101=1:128, 110=1:256, 111=1:1024
Заголовок сообщения: Re: RC-5 без использования внешнего прерывания (?)
Добавлено: Пн авг 06, 2012 17:24:23
Встал на лапы
Зарегистрирован: Чт мар 05, 2009 08:15:25 Сообщений: 93
Рейтинг сообщения:0
zero648 писал(а):
Какая частота МК и что за МК? А то вот эти две вещи как-то несовместимы: .... if (evt_cnt == 0) TCCR0=4; //Если первое событие включаем счетчик, 15.625КГц .... TCCR2=0b00000100; //250 kHz ....
ATmega16 прескалер для таймера0, таймера1: 001=1:1, 010=1:8, 011=1:64, 100=1:256, 101=1:1024
прескалер для таймера2: 001=1:1, 010=1:8, 011=1:32, 100=1:64, 101=1:128, 110=1:256, 111=1:1024
Как не совместимы? Прискалер для таймера0 и таймера2 как бы...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения