Hallo Leute!
Ich möchte mich nun mal an das Programmieren mit Interrupts heranwagen und hab dazu mittlerweile einiges gelesen. Nun zum konkreten Beispiel. Ich hab mir eine Funktion void fahren(int strecke) programmiert, die Asuro geradeaus fahren lässt. Sie funktioniert auch sehr gut, also das eigentliche Problem liegt nicht im Fahren an sich. Das Problem ist, dass ich keine Kontrolle über Asuro habe, so lange er fährt, da er ja solange in der Funktion fahren steckt. Das heißt ich kann Asuro nicht auf einen Schalter reagieren lassen, während er fährt. Die Lösung: Interrupts!
Aber irgendwie krieg ichs nicht hin. Ich zeig euch mal wie ichs probiert hab:
Dieses Programm soll Asuro 2000mm geradeaus fahren lassen und soll ihn anhalten lassen, wenn ein Schalter betätigt wird.Code:#include asuro.h #include fahren.h SIGNAL(SIG_INTERRUPT1) { StatusLED(RED); while(1); } int main(void) { Init(); StartSwitch(); fahren(2000); //lässt Asuro 2000mm geradeaus fahren StopSwitch(); while(1); return 0; }
Aber leider funktioniert es nicht. Asuro fährt seine 2000mm, egal ob ein Taster gedrückt wird oder nicht. Wo ist der Fehler?
Gruß farratt
PS: Ich nutze die originale "asuro.h", bin mehr so der Selbermach-typ...
Lesezeichen