Atmega128 Problem mit Timout-Error

Gast #2266304
Lesenswert?

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
#2266308
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren