Hey, habe vor ca. einem Jahr schon mal einen atmega8 in Assembler
probiert, nachdem ich mich gestern und heute wieder ein bisschen
reingearbeitet habe, wollte ich mal in C programmieren.
Ich habe das AVR-GCC Tutorial mal angefangen und bisher hat auch alles
geklappt, nun bin ich beim Thema Timer (habe nicht alles chronologisch
abgearbeitet)
Unter Overflow Interrupt steht folgender Code:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | int main(void)
|
5 | {
|
6 | // Timer 0 konfigurieren
|
7 | TCCR0 = (1<<CS01); // Prescaler 8
|
8 |
|
9 | // Overflow Interrupt erlauben
|
10 | TIMSK |= (1<<TOIE0);
|
11 |
|
12 | // Global Interrupts aktivieren
|
13 | sei();
|
14 |
|
15 | while(1)
|
16 | {
|
17 | /* Sonstige Aktionen */
|
18 | }
|
19 | }
|
20 |
|
21 | /*
|
22 | Der Overflow Interrupt Handler
|
23 | wird aufgerufen, wenn TCNT0 von
|
24 | 255 auf 0 wechselt (256 Schritte),
|
25 | d.h. ca. alle 2 ms
|
26 | */
|
27 | #ifndef TIMER0_OVF_vect
|
28 | // Für ältere WinAVR Versionen z.B. WinAVR-20071221
|
29 | #define TIMER0_OVF_vect TIMER0_OVF0_vect
|
30 | #endif
|
31 |
|
32 | ISR (TIMER0_OVF_vect)
|
33 | {
|
34 | /* Interrupt Aktion alle
|
35 | (1000000/8)/256 Hz = 488,28125 Hz
|
36 | bzw.
|
37 | 1/488,28125 s = 2,048 ms
|
38 | */
|
39 | }
|
Der Compiler sagt aber, dass er TCCR0 gar nicht kennt.
Muss ich das irgendwie noch extra deklarieren?
Ich nutze übrigens AVR Studio.
Gruß
Racer443