UART RX funktioniert nach Abschalten von TX nicht mehr

OP #1803066
Lesenswert?

Hi

Mal wieder ein UART Problem
leider habe ich hierzu im Forum noch nichts gefunden.

Der Code im Anhang funktioniert, solange der UART TX nicht abgeschaltet 
wird. (bis auf den einen Output der ja für TX verwendet wird) Da ich 
aber TX ebenfalls als Ausgang verwenden möchte habe ich versucht TX 
abzuschalten. Nun funktioniert aber auch das Empfangen der Daten nicht 
mehr und kein Ausgang wird geschaltet.

Vielleicht mag jemand von euch mal darüber schauen und mir sagen was ich 
hier falsch mache. Sorry für umständlichen programmierstiel. Bin leider 
kein Profi :)

Hardware: ATMEGA8

zum .c file: Code funktioniert wenn man die auskommentierten Teile dazu 
nimmt,
so wie er jetzt ist (also ohne diese Codeteile) nicht.

Vielen Dank schonmal
Angehängte Dateien:
OP #1803177
Lesenswert?

Danke, jetzt hat es funktioniert. Allerdings fehlt mir ein wenig das 
Verständnis warum es so funktioniert. Was bringt "volatile" genau?

hab ich das richtig verstanden dass die variable mit "volatile" jedes 
mal neu aus dem hauptspeicher geladen wird?
Das heißt dass diese Variable auch extern verändert werden kann (in 
meinem fall durch den uart empfang) und durch das neu laden bekommt das 
programm die änderung auch mit??

Warum hat dann das "alte" programm funktioniert

Will hier jemand Licht ins Dunkel bringen. Ich steh grad auf m Schlauch
#1803179
Lesenswert?

Thomas B. schrieb:

> hab ich das richtig verstanden dass die variable mit "volatile" jedes
> mal neu aus dem hauptspeicher geladen wird?

genau.
volatile heisst für den Compiler, dass er keine Optimierungen damit 
machen darf. Insbesondere darf er nicht davon ausgehen, dass er aufgrund 
der Datenflussanalyse davon ausgehen darf, dass er den Inhalt der 
Variablen aufgrund der Vorgeschichte kennt.

> Das heißt dass diese Variable auch extern verändert werden kann (in
> meinem fall durch den uart empfang) und durch das neu laden bekommt das
> programm die änderung auch mit??

Exakt.

> Warum hat dann das "alte" programm funktioniert

reiner Zufall.
Wenn das Programm leicht anders aussieht, mag alles wieder ganz anders 
aussehen.

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