Цитата
Ничего не понимаю. То пишут об обновлении регистров таймера2 TCNT2, OCR2 и TCCR2, хотя нужен только TCNT2, при чём здесь остальные регистры?
Я привел все регистры таймера2, которые требуют наличия внешнего такта для обновления. И нужен будет не только TCNT2, а еще и TCCR2, так как после перехода в асинхронный режим его содержимое нужно выставить заново.
Впрочем, вот 2 цитаты из даташита, которые все объясняют:
Цитата
Warning: When switching between asynchronous and synchronous clocking of Timer/Counter2, the Timer Registers TCNT2, OCR2x, and TCCR2x might be corrupted. A safe procedure for switching clock source is:
a. Disable the Timer/Counter2 interrupts by clearing OCIE2x and TOIE2.
b. Select clock source by setting AS2 as appropriate.
c. Write new values to TCNT2, OCR2x, and TCCR2x.
d. To switch to asynchronous operation: Wait for TCN2xUB, OCR2xUB, and TCR2xUB.
e. Clear the Timer/Counter2 Interrupt Flags.
f. Enable interrupts, if needed.
Цитата
When writing to one of the registers TCNT2, OCR2x, or TCCR2x, the value is transferred to a temporary register, and latched after two positive edges on TOSC1. The user should not write a new value before the contents of the temporary register have been transferred to its destination.
Цитата
То пишут о прерываниях. Зачем там прерывания по большому счёту?
По-большому счету - не нужны. Разве чтобы не пропустить пачку из 256 импульсов.Но тогда зачем писать в него FF и ждать, когда проц отреагирует обычным образом (пост#6)?
Цитата
Задачка носит налёт академичности, поскольку один внешний триггер легко решает проблему
С этим никто и не спорит, да и автору поста она никакой пользы не несет, так как таймер у него все равно занят. Просто хочется предостеречь остальных читателей, которые, возможно, возьмут этот метод на заметку.