Hallo Jungs,
ich stehe auf dem Schlauch und weis nicht was ich falsch mache. Der
Interrupt Timer1 fuktioniert soweit.
Unten sieht Ihr meinen Code. Mein Atmega64C1 laeuft mit 12MHz. Ich will
erreichen, dass mein Timer1 alle ca. 100ms ausgefuehrt wird. Momentan
bin ich bei ca. 350ms. Wenn ich richtig verstanden habe, muss ich in
diesem Fall einen Wert fuer TCNT1 berechnen, da sehe ich kein Problem.
Jedoch wenn ich den Wert TCNT1 auf irgendwelche Zahl aendere, egal
welche, wird der Interrupt immer noch alle ca. 350ms ausgefuehrt.
Unabhangig ob der Wert hoch oder niedrig ist. Was mache ich falsch. Ich
habe nichts anders gemacht, wie in vielen Beitraegen zu Timern
beschrieben.
1 | void main(void)
|
2 | {
|
3 | TCCR1B |= (1<<CS00) | (1<<CS01); //prescaler 64
|
4 | TIMSK1 |= (1<<TOIE0);
|
5 | TCNT1 = 65500;
|
6 | sei();
|
7 |
|
8 | while (1){
|
9 | ........
|
10 | }
|
11 | }
|
12 |
|
13 | ISR(TIMER1_OVF_vect){
|
14 | led_an();
|
15 | }
|
Gruss