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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.