Hai, folgendes nerfiges Problem:
SIG_INTERRUPT0 ist an einem Taster angeschlossen. Wenn es ausloest. soll der Bot eine ausweich Funktion ausfuehren. Das funktionier auch alles fast perfekt. Das Problem ist, er fuehrt die Funktion ausweichen() 2, manchmal auch 4 mal hintereinander aus. Hm erstmal Quelltext:
Ich muss hier INTERRUPT statt SIGNAL nehmen weil ich die Interrupts brauche um die Geschwindigkeit zu regeln. Nun zum Code. Wenn der INT ausloest wird erstmal INT0 ausgeschaltet damit der INT nicht mehrmals ausloesen kann. Dann wird der INT0 zurueckgesetzt falls er doch ein 2. mal ausgeloest hat. Danach solle der Bot einmal ein stueck zurueck fahren und stehenbleiben. Und erst dann wird INT0 wieder eingeschlaltet.Code:// Ausfuehren wenn Interrupt 0 ausloest INTERRUPT(SIG_INTERRUPT0) { // Interrupt INT0 ausschalten GICR &=~ (1 << INT0); // Mehrmals ausgeloesten Interrupt loeschen GIFR = (1 << INTF0); ausweichen(); // Interrupt INT0 einschalten GICR = (1<<INT0); }
Ich habe keine Idee mehr warum er mehrmals zurueck faehrt. Kann mir da jemand ein Tipp geben?
Lesezeichen