Ich bin seit einiger Zeit dabei, ATtiny2313er zu programmieren. Die
ersten Mini-Programme hab ich zum Laufen gekriegt (so was wie ein
Lauflicht etc). Nun wollte ich einen Timer so programmieren, daß ein
Interrupt ausgelöst wird, wenn der 200 erreicht. Doch es haut einfach
nicht hin:
Obwohl die avr/io.h includiert ist, kennt der Compiler kein Register des
Timer0.
Ich habe schon in die io.h bzw in die iotn2313.h geschaut und dort sind
die Register so definiert, wie ich sie angegeben habe. Wenn ich die
ganze Sache mit Timer1 statt Timer0 schreibe (TCCR1A, TCCR1B, OCR1A),
kompliert das Programm fehlerfrei. Ich bin auch sicher, daß ich mich
nicht vertippt habe (z.B. ein Oh statt einer Null).
Hier der Auszug aus dem Programm mit den Fehlermeldungen des Compilers:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | int main ()
|
5 | {
|
6 |
|
7 | DDRB=0b11111111; //PortB (TimerAusgang) ist Ausgang
|
8 | PORTB=0b00000000; //Am Anfang ist alles dunkel
|
9 | TCCR0A |= 0b01000000; //Signal an PortB ausgeben, Normale Timerfunktion
|
10 | TCCR0B |= 0b00000101; //Timer start! 1/1024 CPU-Takt
|
11 | OCR0A = 200; //Erreicht der Timer 200, wird ein Interrupt geschmissen
|
12 | TIMSK |= 0b00000001; //Compare-Interrupt für ComareRegister A einschalten
|
13 | sei();
|
14 |
|
15 | while(1)
|
16 | {
|
17 | //uswusw
|
18 | }
|
19 | }
|
Und hier die Fehler des Compilers:
Build started 4.1.2010 at 14:05:41
avr-gcc.exe -mmcu=atmega128 -Wall -gdwarf-2 -Os -std=gnu99
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP
-MT Interrupts.o -MF dep/Interrupts.o.d -c ../Interrupts.c
../Interrupts.c: In function 'main':
../Interrupts.c:9: error: 'TCCR0A' undeclared (first use in this
function)
../Interrupts.c:9: error: (Each undeclared identifier is reported only
once
../Interrupts.c:9: error: for each function it appears in.)
../Interrupts.c:10: error: 'TCCR0B' undeclared (first use in this
function)
../Interrupts.c:11: error: 'OCR0A' undeclared (first use in this
function)
make: *** [Interrupts.o] Error 1
Build failed with 5 errors and 0 warnings...
Ich programmiere mit AVR Studio 4.14 und WinAVR-20090313. Danke für eure
Hilfe!