Forum: Mikrocontroller und Digitale Elektronik Atmega128 Problem mit Timout-Error


von Tim (Gast)


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

von Karl H. (kbuchegg)


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.

von Tim (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.