Все починається з переддільника вхідної частоти. Наз. він prescaler (встановлював масштабу).
Потрібен для того, щоб вибирати частоту, що подається на вхід таймера:
Дві трапеції знизу - це мультиплексори . В залежності від коду(CS10..CS12 и CS00..CS02), на вихід мультиплексора подаєтся сигнал с одного з восьми входів:
0. (000) Нема тактової частоти (за замовчуванням)
1. (001) CK (не поділена тактова частота контролера) 2. (010) CK / 8
3. (011) CK/64 4. (100) CK/256 5. (101) CK/1024
6. (110) Інвертований сигнал з виводу ІМС МК (T0 або T1)
7. (111) Неінвертірованний сигнал з виводу ІМС МК
Щоб вибрати для таймера необхідне джерело тактового сигналу, необхідно записати його адресу у відповідні біти регістрів TCCR0 - для 0-го таймера, і TCCR1B - для 1-го таймера. Які біти - дивимося на малюнки:)
TIMSK - Timer Interrupt MaSK register - регістр маски переривань
TIFR - Timer Interrupt Flag Register - регістр прапорів переривань
TCCR1A - Timer/Counter1 Control Register A - контрольний регістр 1-го таймера А
TCCR1B - Timer/Counter1 Control Register B - контрольний регістр 1-го таймера B
Control logic - керуюча логіка
ICR1 - timer/counter1 Input Capture Register1 - вхідний регістр засувки 1-го таймера
TCNT1 - Timer/CouNTer1 - власне, регістр стану таймера
16-bit Comparator - компаратор
OCR1A - timer / counter Output1 Compare Register A - вихідний регістр компаратора A
TIMSK - він визначає, які переривання таймера ми будемо використовувати
TCCR1B - регістр управління 1-м таймером
TCNT0 - власне, регістр стану таймера. Його ми будемо обнуляти по перериванню компаратора
OCR1A - у нього завантажується число, з яким порівнює компаратор
Ось так виглядає регістр TIMSK:
Він однаковий для обох таймерів, тому в ньому є біти відповідають за переривання і того й іншого таймера. Подивимося, хто за що відповідає:
7 - TOIE1 - Timer/Counter1 Overflow Interrupt Enable - дозвіл переривання по переповнення 1-го таймера
6 - OCIE1A - Timer/Counter1 Output Compare Match Interrupt Enable - дозвіл переривання компаратора 1-го таймера
5,4 - ні за що не відповідають (зарезервовані)
3 - TICIE1 - Timer/Counter1 Input Capture Interrupt Enable - дозвіл переривання захоплення 1-го таймера
2 - зарезервований
1 - TOIE0 - Timer/Counter0 Overflow Interrupt Enable - дозвіл переривання по переповнення 0-го таймера
0 - зарезервований