Forum: Mikrocontroller und Digitale Elektronik UDR Bug bei Benutzung in ISR?


von Ingo (Gast)


Lesenswert?

Hallo, ich nutze das Atmel Studio6.
Wenn ich nun:
1
// In dem Empfangsinterrupt
2
Highbyte =( UDR & 0xf0)>>4;
3
Lowbyte = UDR 0x0f;
Und Das selbe wie oben mit einer temporären Variable mache in die ich 
zuvor das UDR gespeichert habe geht es richtig, direkt mit dem UDR kommt 
Unsinn heraus bzw nicht nachvollziehbare Werte, die offensichtlich 
keinen Bezug zum tatsächlichen empfangenen Wert haben. Könnt ihr das 
bestätigen, Optimizer steht auf Os.


Ingo

von g457 (Gast)


Lesenswert?

> Könnt ihr das bestätigen,

Nicht nur wir sondern auch (bzw. insbesondere) das Datenplatt.

HTH

von g457 (Gast)


Lesenswert?

achso damit keine Missverständnisse aufkommen: Nein, das ist kein Bug, 
das ist gewolltes Verhalten.

HTH

von (prx) A. K. (prx)


Lesenswert?

Es gibt bei I/O-Modulen wie der USART Register, bei denen Aktivitäten 
allein schon dadurch ausgelöst werden, indem man etwas reinschreibt oder 
ausliest. Tut man das zweimal, wie du, löst man das zweimal aus.

von gaast (Gast)


Lesenswert?

Natürlich, UDRx sollte nur eimal gelesen werden. Steht auch im 
Datenblatt des von dir verwendeten Controllers (bei dem du es nicht für 
nötig hälst, uns den Typ zu sagen).
Du meinst übrigens High- bzw Lownibble, nicht -byte.

von Ingo (Gast)


Lesenswert?

Natürlich, Nibble. Danke, ich werd nochmal genauer im Datenblatt meines 
Mega8 lesen...


Ingo

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.