Hallo, bin noch Anfänger,
dachte mir vielleicht kann mir hier jemand schnell weiterhelfen.
Ich versuche über den Timer1 einen Sekunden-Interrupt zu erzeugen.
Im Testszenario will ich an einem B-Pin eine LED b linken lassen.
Das klappt auch, nur blinkt die LED viel zu langsam. Der interrupt wird
ca alle 8 Sekunden ausgeführt.. Also die Zahl 8 ist ja schon komisch,
aber dachte ich hätte alles richtig eingestellt.
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 |
|
5 | int main(void)
|
6 | {
|
7 |
|
8 | TCCR1B = (1<<CS12); // Timer 1 mit 256 prescale starten
|
9 | TIMSK1 = 0x1; // Overflow Interrupt setzen
|
10 | TCNT1H = 0x88; // für 1 Hz
|
11 | TCNT1L = 0xee;
|
12 |
|
13 | sei(); // Global Interrupts aktivieren
|
14 |
|
15 | DDRB = 0xff;
|
16 |
|
17 | while(1)
|
18 | {
|
19 | }
|
20 | return 0;
|
21 | }
|
22 |
|
23 | ISR (TIMER1_OVF_vect)
|
24 | {
|
25 | TCNT1H = 0x88; // für 1 Hz
|
26 | TCNT1L = 0xee;
|
27 | PORTB ^=0xff;
|
28 | }
|