Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
12.07.2011, 20:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Исторически сложилось так, что в основном работал с продукцией Микрочипа и Интела. Сейчас Altera NIOS-II.
__________________
misterdi<@>i.ua
|
|
|
|
13.07.2011, 00:19
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Не получается вникнуть в ваш код ![Улыбка](images/smilies/icon_smile.gif) (давно под контроллеры писал)
Основная идея.
Ловим передний фронт импульса:
- запускаем таймер, который начинает считать (sirc_t) временные промежутки
- переключаем прерывание на отлов заднего фронта импульса
Ловим задний фронт импульса:
- останавливаем таймер
- анализируем, что там насчитал таймер.
-- если четыре отсчета - это стартовый импульс - инициализируем переменные.
-- если один или два, то это информационный бит - вдвигаем его в ответ
- если мы приняли полную посылку - выставляем флаг "принято"
- переключаем прерывание на отлов переднего фронта импульса
Время переполнения таймера для подсчета временных промежутков я прикидывал в excel (не сохранился), дабы алгоритм работал с макимальным разбросом базовой ширины импульсов.
|
|
|
|
13.07.2011, 13:03
|
|
Прописка
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Сообщение от artyomugr
|
Захотел реализовать декодер Sony sirc
|
Тут у меня кое чего по этому вопросу завалялось
|
|
|
|
13.07.2011, 14:28
|
|
Прописка
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Сообщение от AndryG
|
Ловим передний фронт импульса:
- запускаем таймер, который начинает считать (sirc_t) временные промежутки
- переключаем прерывание на отлов заднего фронта импульса
Ловим задний фронт импульса:
|
В Вашей программе режим внешнего прерывания установлен так что будет реагировать на любое изменение сигнала с IR приемника т.е. переключать на отлов заднего или переднего фронта не надо
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: Off
GICR|=0x40;
MCUCR=0x01;
GIFR=0x40;
При входе в прер. анализируете состояние входного сигнала с IR : если 0-сбрасываете значения счетчика "тиков",иначе читаете значение счетчика т.е получаете длительность нулевого сигнала с IR приемника. Что делать с этими данными смотрите по протоколу (с чисто SONY я не работал чаще использовал протокол RC5). Кстати некоторые пульты от SONY тоже его использовали. Как известно поначалу SONY много чего из PHILIPS-а брала
А в таймере реализуется что то подобное (тупо увеличивается значение счетчика "тиков")
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xFD; //переинициализировали таймер - отсчитывает 96мкс
if (++tick › 1200) //если насчитали более 1200 тиков (т.е. недопустимо большая длительность импульса)
{
TCCR0=0x00; //сбросили все к исходному состоянию
TCNT0=0x00;
tick = 0;
start_cond = 0;
}
}
Последний раз редактировалось heady69; 13.07.2011 в 15:16.
|
|
|
|
13.07.2011, 21:22
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Сообщение от MisterDi
|
Исторически сложилось так, что в основном работал с продукцией Микрочипа и Интела. Сейчас Altera NIOS-II.
|
А на Ассемблере пишете? Сколько раз пытался вьехать в Ассемблер, так и не вышло
Altera NIOS-II. - Это ПЛИС?
|
|
|
|
13.07.2011, 21:27
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Сообщение от heady69
|
В Вашей программе режим внешнего прерывания установлен так что будет реагировать на любое изменение сигнала с IR приемника т.е. переключать на отлов заднего или переднего фронта не надо
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: Off
GICR|=0x40;
MCUCR=0x01;
GIFR=0x40;
При входе в прер. анализируете состояние входного сигнала с IR : если 0-сбрасываете значения счетчика "тиков",иначе читаете значение счетчика т.е получаете длительность нулевого сигнала с IR приемника. Что делать с этими данными смотрите по протоколу (с чисто SONY я не работал чаще использовал протокол RC5). Кстати некоторые пульты от SONY тоже его использовали. Как известно поначалу SONY много чего из PHILIPS-а брала
А в таймере реализуется что то подобное (тупо увеличивается значение счетчика "тиков")
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xFD; //переинициализировали таймер - отсчитывает 96мкс
if (++tick › 1200) //если насчитали более 1200 тиков (т.е. недопустимо большая длительность импульса)
{
TCCR0=0x00; //сбросили все к исходному состоянию
TCNT0=0x00;
tick = 0;
start_cond = 0;
}
}
|
Добрый вечер! Я представляю как фиксировать данные, пишу код... а он не работает.... в реале все должно работать, но увы не работает.
Вот я два исходника выложил, пожалуйста подскажите что я не так делаю? Почему код не работает? Тактовая частота настроена верно таймер тоже.... ![Обижен](images/smilies/icon_beee.gif)
Помогите мне пожалуйста.
|
|
|
|
13.07.2011, 21:29
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Сообщение от heady69
|
Тут у меня кое чего по этому вопросу завалялось
|
Спасибо Вам большое! Сейчас посмотрю исходник.
У меня точь в точь исходник есть, он не будет работать так как настроен таймер не правильно, если я не прав - поправьте. В предыдущем моем сообщении есть этот исходник посмотрите.
Последний раз редактировалось artyomugr; 13.07.2011 в 21:32.
|
|
|
|
13.07.2011, 23:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Цитата:
|
А на Ассемблере пишете? Сколько раз пытался вьехать в Ассемблер, так и не вышло
|
Раньше писал, теперь очень редко, компиляторы дают практически такой же код.
Я начинал на "Электронике Б3-21" - первый советский программируемый калькулятор, если мне не изменяет склероз, у него вся память - 9 регистров и 60 ячеек программы.
Цитата:
|
Altera NIOS-II. - Это ПЛИС?
|
Да, Контроллер, ОЗУ + периферия в одном корпусе. Очень удобно, но голова временами пухнет.
__________________
misterdi<@>i.ua
|
|
|
|
13.07.2011, 23:37
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
› Да, Контроллер, ОЗУ + периферия в одном корпусе. Очень удобно, но голова временами пухнет.
=)))))
У меня и от Атмелей бывает гематомы с мозгов вылазят!
Особенно когда касается вопрос ввода/вывода причем вывода 15-20линий
Сегодня закончил программу для автоматической мойки форм (три датчика уровня, две кнопки, два джампера и 20 выходов на клапана и пускателя), намучился я отлавливать и устранять глюки в коде
|
|
|
|
13.07.2011, 23:40
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Re: Помогите разобраться с таймером в Atmega8
Автору топика могу посоветовать устроить отладку в Proteus.
Вместо пульта использовать второй контроллер.
Или VMLAB - там можно устроить нужный входной поток. (проект есть в моем архиве выше по тексту)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:53.
|
|