Спасибо за оказанное внимание к моим изысканиям.
Только я не просил поковыряться в моих потрохах. У меня проблема не в коде, так как его просто нет, а в настройке таймера на два прерывания за цикл счёта. Поковыряться я предлагал в даташите для определения возможно ли это вообще, а то как то загадочно, там всё это описано.
И по поводу логики моего мышления :
vitalik_1984 писал(а):
Если вершина счета 0x00FF, то выставляется почти мгновенно два флага один - флаг совпадения с регистром сравнения, второй по очистке счетчика ведь до верха уже дошли! и происходит сброс счетчика.
как я и предпологал этим режимом пользуются не все и очень легко спутать его с "быстрым ШИМ" где TCNT1 обнуляется при достижении вершины. Поэтому будет не лишним ещё раз привести цитату из книги:
"При достижении счетчиком максимального значения происходит смена направления счета, но счетчик остается в этом состоянии в течение одного периода сигнала clkT1 (clkT3). В этом же такте устанавливается флаг ICF1 либо OCF1A (зависит от того, какой из регистров используется для задания модуля счета).---Счёт продолжается но на уменьшение--- и при достижении счетчиком минимального значения ($0000) направление счета опять изменяется. При этом устанавливается флаг прерывания TOV1 (TOV3) регистра TIFR (ETIFR) и производится обновление содержимого регистра сравнения." А поковыряться в даташите на 128 мегу стр126-128 и картинка + надписи на стр127 + блок схема таймера на стр 110
В приложеном файле Снимок-12 последовательность событий в Т1.
Так вот хочется чтобы строки:
[AVR INTERRUPT] Handling TIMER1_CAPT(Timer/Counterl Capture Event), address=0x002C
[AVR INTERRUPT] TIMER1_CAPT completed
были не после строки [AVR TIMER/COUNTER 1] Overflow (0x0000)
а после строки [AVR TIMER/COUNTER 1] Top (0x00FF).
И всё должно выглядеть вот так:
[AVR TIMER/COUNTER 1] Overflow (0x0000)
[AVR INTERRUPT] Handling TIMER1_OVF(Timer/Counterl Оverflow], address=0x0038.
[AVR INTERRUPT] TIMER1_OVF completed.
Другие события по сравнению в каналах ШИМ
[AVR TIMER/COUNTER 1] Top (0x00FF)
[AVR INTERRUPT] Handling TIMER1_CAPT(Timer/Counterl Capture Event), address=0x002C
[AVR INTERRUPT] TIMER1_CAPT completed
Другие события по сравнению в каналах ШИМ
[AVR TIMER/COUNTER 1] Overflow (0x0000)
[AVR INTERRUPT] Handling TIMER1_OVF(Timer/Counterl Оverflow], address=0x0038.
[AVR INTERRUPT] TIMER1_OVF completed.
И так в цикле.