Hi, wie schon erähnt hab ich ein Problem mit meinem Timout-Error. Ich sende einen Frame via RS485 und empfange eine Antwort. Ich möchte allerdings einen Timeout erzielen falls nicht geantwortet wird. So wie der unten stehende Quellcode steht funktioniert das Programm perfekt. Wenn ich jetzt allerdings die Ausgabe "send_usb_c('x')" auskommentiere, funktioniert es nicht mehr. FullFrame <= Zeigt ob ein vollständiger Frame empfangen wurde. TimeoutErr <= Zeigt ob die Timeout-Zeit erreicht wurde. . . timer_start(); while(FullFrame!=TRUE && TimeoutErr!=TRUE) { send_usb_c('x'); // Sendet char via USB an PC } timer_stop(); . . Die Ausgabe muss aus dem Programm verschwinden. Hat jemand eine Idee, warum das nicht funktioniert? Oder was ich machen kann. MfG: Tim
TimeoutErr als volatile definieren, FullFrame als volatile definieren. Schön langsam wirds Zeit, dass wir am Forum ganz groß oben drauf schreiben: Wenn Variablen in einer ISR UND in main() (oder einer anderen Funktion) benutzt werden, dann müssen diese volatile gemacht werden, damit dem Compiler mitgeteilt wird: Zugriffe auf diese Variable bitte nicht wegoptimieren.
Perfekt! TimeoutErr war als volatile definert, aber FullFrame nicht. Danke für die schnelle Hilfe, schönes Wochenende. GELÖST! Gruß Tim
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.