Gast
#790695
Also ich habe ein kleines Protokoll zur Datenübertragung mit dem PC
implementiert, welches beim Empfang eines gültigen (nach CRC Prüfung
usw) Steuercodes die globale Variable "usart_cmd_recv" auf das
empfangene Kommando setzt, der Empfang ist Interrupt-gesteuert. Ich
hatte bisher gar keine Probleme. Im Hauptprogramm wird in einer while(1)
Schleife unter anderem überprüft ob ein Kommando angekommen ist
(usart_cmd_recv != 0) und dann wird eine switch-case Abfrage gemacht und
je nach dem welches Kommando empfangen wurde die ein oder andere
Funktionen ausgeführt.
Eine Funktion dient dazu Daten vom PC ins EEPROM zu schreiben. Diese
Funktion wird auch aufgerufen und ein ACK wird zurückgesendet danach
kommt folgende while schleife:
while(usart_cmd_recv != EEPROM_DATA_START) {
// Implement TIME OUT
}
Diese Schleife soll einfach nur darauf warten, dass der PC das Kommando
EEPROM_DATA_START sendet, aber wenn das passiert wird die Schleife
einfach nicht beendet, woran kann das liegen. Ich kann mit sicherheit
sagen, dass das programm zugriff auf die Variable hat, weil wenn ich die
Schleife folgendermaßen konstruiere:
while(usart_cmd_recv != WRITE_EEPROM_DATA) {
// Implement TIME OUT
}
wird die Schleife nicht ausgeführt, da WRITE_EEPROM_DATA das Kommando
ist um die Funktion aufzurufen ...