Hallo,
ich habe in meiner main() ein Menü aufgebaut, dass verschiedene unterfunktionen aufruft. Funktioniert alles soweit, allerdings wird nach einem Interrupt nicht an die richtige Stelle gesprungen.
Daher habe ich vor der main() noch 2 volatile Varibalen deklariert
Der Interrupt soll nun "agrobot2" mit der aktullen Menü-Ziffer belegen, aus der er gerade raus gesprungen ist, anschließend wird "agrobot" mit einer neuen Ziffer belegt, die auskunft über die aufzurufende Funktion gibt.Code:volatile int8_t agrobot; //Menü-Ziffer volatile int8_t agrobot2; //Vorherige Menü-Ziffer
Darauf soll das Hauptmenü die Funktion aufrufen, die vom Int. ausgelöst werden soll. Dieser wird als Parameter "agrobot2" übergeben, was anschließend einfach zurück gegeben wird, und somit als nächster Menüpunkt verwendet wird:Code:SIGNAL (SIG_INTERRUPT0) //Auffahrschalter Front { agrobot2 = agrobot; agrobot = MENU_backevade; //MENU... ist per define festgelegt }//Auffahrschalter Front
Wird alles soweit kompiliert, allerdings passiert beim Auslösen des Interrupts nichts.Code:while(1) //Hauptschleife { //Aufgabe/Funktion abfragen switch ( agrobot ) { case MENU_error: agrobot = error(); //Fehlerausgabe break; case MENU_menu: agrobot = menu(); //Menü break; //...weitere Menüpunkte case MENU_backevade: agrobot = backevade(agrobot2); //Rückwärts ausweichen break; case MENU_frontevade: agrobot = frontevade(agrobot2); //Vorwärts ausweichen break; } }//Hauptschleife
Kann mir da jemand helfen wo der Fehler liegt, oder sagen wie es besser geht?
Ich hoffe das ist nicht zu speziell und ich habe mich vernünftig ausgedrückt![]()







Zitieren

Lesezeichen