Hallo asuror,
Code:
#include "asuro.h"
#include <avr/interrupt.h>
// Damit der IRQ funktioniert, muß dieser freigeschaltet werden
GICR = (1<<INT1); //z.B beim ATMega8
// IRQ INT1
SIGNAL(SIG_INTERRUPT1){
//... hier steht was im Interrupt gemacht werden soll.
}
int main(void)
{
Init();
sei(); // Globale IRQ's freigeben
StartSwitch();
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(100,100);
StatusLED(RED);
MotorDir(RWD,FWD);
MotorSpeed(100,100);
unsigned char i;
for(i = 0;i < 255;i++){
Sleep(255);
}
while(1);
return 0;
}
Ich weiß nicht ob, Du die anderen Dinge die ich aus der SIGNAL... entfernt habe im Interrupt ausgeführt haben willst?
Wenn dem so ist, so ist dies nicht die richtige Art. Der Interrupt soll nur kurz die normale Abarbeitung unterbrechen
und nicht stundenlang was eigenes tun, dann ist der Sinn verfehlt.
Grüße
Lesezeichen