Здравствуйте. Помогите разобраться, что неправильно? Не получается получить прерывания по переполнению.
Пишу в codevision. Проверяю в протэусе. Программа прилагается.
Я на вход таймера PIND.5(Т1)
подаю импульсы и использую Т1 pin Rising Edge, тактируется от внешнего генератора, подключенного к выводу Т1, по нарастающему фронту поэтому TCCR1B=0x07. После отсчета 21 импульса (TCNT1=n1,n2) по переполнению должно идти прерывание. И вот следующий импульс делить на два импульса (для этого и задержки). Интересно вот, что нулевой таймер работает нормально, а первый, ГАДЮКА, нет. А мне нужны они оба.
КАК ЗАПУСТИТЬ?
ЗАРАНЕЕ ВСЕМ СПАСИБО.
> Таймер1 в Atmega8, Прерывания
> Таймер1 в Atmega8, Прерывания
- Вложения
-
- t1.txt
- (1.62 КБ) 234 скачивания
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Первое: побитовое И (&) и логическое И (&&) разные вещи.
второе: вышеуказанное условие у Вас крутится в бесконечном цикле т.е. при выполнении одного из ваших условий произойдет либо остановка (TIMSK=0x00;) либо запуск таймера (TIMSK=0x05;)
И т.к. бесконечный цикл крутится гораздо быстрее, чем обрабатывается прерывание будет достаточно короткого импульса на (PIND.3==1) что бы остановить таймер т.е. таймер будет стопорится быстрее, чем запускаться.
Возможно ошибку вносит Ваша хитрая коммутация входов-выходов.
Это лишь предварительный анализ Вашего кода.
Код: Выделить всё
if((PIND.3==0)&(PIND.0==1)&(PIND.1==1)&(PIND.2==1))второе: вышеуказанное условие у Вас крутится в бесконечном цикле т.е. при выполнении одного из ваших условий произойдет либо остановка (TIMSK=0x00;) либо запуск таймера (TIMSK=0x05;)
И т.к. бесконечный цикл крутится гораздо быстрее, чем обрабатывается прерывание будет достаточно короткого импульса на (PIND.3==1) что бы остановить таймер т.е. таймер будет стопорится быстрее, чем запускаться.
Возможно ошибку вносит Ваша хитрая коммутация входов-выходов.
Это лишь предварительный анализ Вашего кода.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"