У меня мега48 - регистры или TCCR0A или TCCR0B за это отвечают. Регистр A еще отвечает за выход на порты непосредственно с таймера (как бы не промахнуться, на них у меня выходы с логики напрямую включены.)
Попробую прогнать в VMLAB
Код: Выделить всё
; В TIMSK0 разрешаем прерывание.
; Он за пределами команды OUT, поэтому обращаемся как к ячейке памяти
ldi zh,high(TIMSK0)
ldi zl, low(TIMSK0)
ldi r16,(1<<OCIE0A)
st z,r16
ldi r16,(1<<WGM01) ; Режим CTC (судя по даташиту)
out TCCR0A,r16
ldi r16,(1<<CS00) ; Предделитель отключим для отладки (частота = clk)
out TCCR0B,r16
ldi r16,$07 ; Число 7 в регистр сравнения
out OCR0A,r16
Код: Выделить всё
a:
sbi PortB,0
nop
nop
cbi PortB,0
rjmp aВ идеале - около 1МГц. Ну а так, сколько получится.вопрос, а сколько вы хотели выжать?
Опрос кнопок, больше ничего в этом режиме. Частота нужна регулируемая. Это просто верхний предел. Если бы была свободна нога OC0A/B и т.д., можно было бы врубить аппаратный режим CTC - проблема бы исчезла.1 МГц меандр сложновато будет получить на независимой ноге на частоте 12МГц при том, что контроллер еще чем то должен будет заниматься.
Цель больше самообучение, нежели конкретный результат. Для последнего можно и отдельный генератор впаять в крайнем случае.я бы не ставил таких высоки целей)