PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt mit Funktionen



Acur
14.04.2008, 16:22
Hallo, ich habe ein kleines Problem und hoffe, dass mir hier vielleicht jemand dabei helfen kann.

Zunächst einmal benutze ich die original Libary. Ich habe eine Go und eine Turn Funktion geschrieben, die auch beide wunderbar funktionieren. Nun will ich, dass der Asuro bei einer Kollision einem Hindernis ausweicht. Da ich ungern die Go Funktion extra dafür umschreiben will, würde ich das gerne mit einem Interrupt lösen. Der Interrupt funktioniert auch ohne Probleme nur will er danach nicht mehr das normale Programm fortführen, sondern steht still.

Hier der Code ohne Deklaration von Go und Turn:

int main(void)
{
Init();
StartSwitch();
while(1){
Go(100);
}
return 0;
}

SIGNAL (SIG_INTERRUPT1)
{
Go(-100);
Turn(180);
}

Ist meine Lösung theoretisch überhaupt möglich?

Gruß
Acur

damaltor
14.04.2008, 19:04
theoretisch ja.

allerding ssolltest du interrupts so kurz wie nur irgend möglich halten (beispielsweise NUR eine variable setzen wie "unfall = 1;", welche dann in der hauptfunktion ausgewertet wird (if(unfall == 1){fahre rückwärts}else{fahre vorwärts}). geschachtelte interrupts, sind mit dem gcc in standardeinstellung nicht möglich, werden aber für die go- und turn funktion benötigt (da diese ja schon innerhalb einer interruptroutine aufgerufen werden).