TOG 0 5 ноября, 2007 Опубликовано 5 ноября, 2007 (изменено) · Жалоба Товарищи, не понимаю как пользовать таймер без прерываний. Устанавливаю таймер в 0: out TCNT1L, Zero out TCNT1H, Zero Устанавливаю прескалер на 1024 и разрешаю режим совпадения: ldi temp, 0b00001101 out TCCR1B, temp out TCCR1A, Zero Устанавливаю регистр совпадения на $F000: ldi temp, $F0 out OCR1AH, temp out OCR1AL, Zero Что дальше ? Он досчитает до $F000 и остановится. Какой флаг проверять ? И как его потом опять запустить ? Помогите ! :) Изменено 5 ноября, 2007 пользователем TOG Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 5 ноября, 2007 Опубликовано 5 ноября, 2007 · Жалоба А что получить хотите ? Мне показалось хотите CTC mode , тогда TCCR1A явно не ноль писать надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 5 ноября, 2007 Опубликовано 5 ноября, 2007 · Жалоба А что получить хотите ? Мне показалось хотите CTC mode , тогда TCCR1A явно не ноль писать надо. Хочу чтобы таймер досчитал до $F000, остановился и выставил флаг. Я этот флаг читаю, сбрасываю и перезапускаю таймер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ALexx 0 5 ноября, 2007 Опубликовано 5 ноября, 2007 · Жалоба Что дальше ? Он досчитает до $F000 и остановится. Какой флаг проверять ? И как его потом опять запустить ? Помогите ! :) Досчитает, сбросит значение TCNT1 в ноль, установит бит TOV1 в регистре TIFR, и не остановится, а продолжит счет с нуля. В основном цикле программы отлавливаете установку бита TOV1 в регистре TIFR. Сброс его осуществляется записью единицы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться