PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Interrupts



diesollbruchstelle
06.10.2004, 22:55
Hallo Ihr, Vielleicht könnt ihr mir helfen...

ich habe ein Programm geschrieben welches mittels der externen Interrupts an PORTD alle Leds an PORTB aus bzw. einschalten soll.
Ich verwende dazu das STK500/STK501.
Und hier ist der Code:

#define __AVR_ATmega128__

#include <avr/io.h>
#include <interrupt.h>

int main()
{
cli();
DDRB = 0xff;
PORTB = 0xff;
DDRD = 0x00;
MCUCR |= 0b00000101
GICR = 0xff;
sei();
while(1);
}

SIGNAL(SIG_INTERRUPT0)
{
PORTB = 0x00;
}

SIGNAL(SIG_INTERRUPT1)
{
PORTB = 0xff;
}
Beim Versuch dies alles zu kompilieren erhalte ich jedoch folgenden fehler:


Compiling: test.c
avr-gcc -c -mmcu=atmega128 -I. -gstabs -O3 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test.lst -std=gnu99 -Wp,-M,-MP,-MT,test.o,-MF,.dep/test.o.d test.c -o test.o
test.c:18: warning: function declaration isn't a prototype
test.c:18: warning: return type of 'main' is not `int'
test.c: In function `main':
test.c:25: error: `GICR' undeclared (first use in this function)
test.c:25: error: (Each undeclared identifier is reported only once
test.c:25: error: for each function it appears in.)
test.c: At top level:
test.c:30: warning: return type defaults to `int'
test.c:30: warning: function declaration isn't a prototype
test.c: In function `SIGNAL':
test.c:30: warning: type of "__vector_1" defaults to "int"
test.c: At top level:
test.c:35: warning: return type defaults to `int'
test.c:35: warning: function declaration isn't a prototype
test.c:35: error: redefinition of 'SIGNAL'
test.c:30: error: previous definition of 'SIGNAL' was here
test.c: In function `SIGNAL':
test.c:35: warning: type of "__vector_2" defaults to "int"
make.exe: *** [test.o] Error 1


Ich habe keine Ahnung was das sein könnte, aber vielleicht könnt ihr mir weiterhelfen...

mfg diesollbruchstelle

07.10.2004, 07:08
Denn sie wissen nicht, was sie tun.
Bspw. brauchst du für die Verwendung von SIGNAL (...) auch die signal.h
Dann schreibt man int main (void).
Das cli () kannst du dir auch schenken, da Int. nach dem Einschalten erstmal deaktiviert sind.
Oben musst du schreiben #include <avr/interrupt.h>.

Schau doch einfach mal in die auf dieser Seite verlinkten Tutorials, dort findet man Beispielprogramme, wo du dir schnell abschauen kannst, was wie zu handhaben ist.

diesollbruchstelle
07.10.2004, 22:46
der grund dass ich <interrupt.h> includiert hab is der, das ich vorher nicht SIGNAL sondern INTERRUPT verwendete ... naja... das is ja egal

thx a lot für die rasche Antwort