The TIMER/COUNTER CONTROL REGISTER (TCCR0)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
R |
R |
R |
R |
R |
CS02 |
CS01 |
CS00 |
Das TCCR0 dient zur Bestimmung des TimerClocks (Clock 0), welcher sich mit einem Prescaler einstellen lässt. Der Clock 0 wird durch Teilung aus dem EnginClock von bspw. 4 MHz abgeleitet.
Ohne Teiler arbeitet der Timer/Counter mit vollem EngineClock, dh. der Timerwert wird nach jeweils 250 ns (bei 4 MHz) um ein In- krement erhöht. Bis zur Auslösung des Timer-Interrupts vergehen somit 64 m s.R reservierte Bits 3,4,5,6,7: werden immer als zero gelesen (READ)
CS00 Clock Select 0
CS01 Clock Select 1
CS02 Clock Select 2
Mittels nachfolgender Truetable kann der entsprechende Teiler eingestellt werden.
CS02 | CS01 | CS00 | Description | Timerwert |
0 |
0 |
0 |
Timer/Counter0 is stopped | xxxxxxxxx |
0 |
0 |
1 |
EngineClock | 64 m s |
0 |
1 |
0 |
CK/8 | 512 m s |
0 |
1 |
1 |
CK/64 | 4096 m s |
1 |
0 |
0 |
CK/256 | 16.384 ms |
1 |
0 |
1 |
CK/1024 | 65.536 ms |
1 |
1 |
0 |
External Pin T0, falling edge | |
1 |
1 |
1 |
External Pin T0, rising edge |
The TIMER/COUNTER 0 (TCNT0)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
MSB |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
LSB |
Der Timer/Counter0 arbeitet als 8-Bit-Up-Counter mit READ/- WRITE Zugriff.
The TIMER/COUNTER INTERRUPT FLAG REGISTER (TIFR)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
R |
R |
R |
R |
R |
R |
TOV0 |
R |
Das TIFR dient zur Registrierung eines Timer/Counter-Overflows von Timer T0.
R reservierte Bits 2,3,4,5,6,7: werden immer als zero gelesen (READ).
TOV0 bei einem Timer/Counter Überlauf (Zählerwert > 255) wird das TOV0 gesetzt [1]
Bei Ausführung des korrespondierenden Interrupt-Vektors wird das TOV0-Bit wieder gelöscht.
Der InterruptHandler (Interrupt Service Routine) wird ausgeführt, wenn:
SREG: I[1]> (&) TIMSK: TOIE0[1] (&) TIFR: TOV0[1]>
The TIMER/COUNTER INTERRUPT MASK REGISTER (TIMSK)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
R |
R |
R |
R |
R |
R |
TOIE0 |
R |
Das TIMSK wird für die Freischaltung des Timer/Counter-Interrupts von Timer T0 verwendet.
R reservierte Bits 2,3,4,5,6,7: werden immer als zero gelesen (READ).
TOIE Timer/Counter Overflow Interrupt Enable:
um bei einem Timer/Counter Überlauf (Zählerwert > 255) den entsprechenden Interrupt freizuschalten, gilt:T0_Interrupt_Enable = TIMSK: TOIE [1] (&) SREG: I [1]