Gast
#284305
Hallo! Ich habe eine UART-Senderoutine, die abwarten soll, ob der vorherige Befehl korrekt empfangen wurde. Es gibt also im UART-Receive-Interrupt eine Überprüfung, ob ein "OK" zurückempfangen wurde. Ist dies der Fall, so wird eine Variable auf 1 gesetzt. Außerdem wird ein Timer gestartet, der bei einem Overflow ebenfalls die Variable auf 1 setzt, um den Programmablauf nicht aufzuhalten. In meiner Senderoutine warte ich zunächst darauf, dass die Variable 1 wird. Ich habe while (pc_answer == 0); und for (; pc_answer == 0;); pc_answer ist natürlich als volatile deklariert. Das Programm bleibt aber in der while- bzw. for-Schleife hängen und wird nicht durch den Interrupt unterbrochen, so dass die Variable auf 1 gesetzt werden kann. Was ist falsch? Oder gibt es schönere Lösungen, die auf eine korrekte Antwort warten, bevor der nächste Befehl gesendet wird? Gruß Markus