Warum empfängt mein Uart nichts?

Gast #129043
Lesenswert?

Hallo zusammen

Ich möchte mit dem Terminal Programm ein Zeichen auf den
Microcontroller senden und auf dem Port ausgeben.

Leider geht es nicht.
Die Hardware ist OK mit einem ähnnlichen Programm mit anderem
Microcontroller geht es

Gruss

Bald kommt der Weihnachtsmann
Angehängte Dateien:
Gast #129045
Lesenswert?

warum so umstzaendlich??

int_rxc:
;in temp,SREG ;CPU-Status sichern
;push temp                ;temp auf dem Stack sichern
   in temp2, UDR             ;später Wert ausgeben
out PORTC, temp2
;   pop temp
;out sreg, temp           ;CPU-Status aus dem Stack wieder herstellen
reti                         ;Interrupt beenden

bei kleinen programmen ohne dass du viele register brauchst kannst das
auch so einfacher loesen
Gast #129046
Lesenswert?

Allerdings solltest Du das Auskommentieren dieser läppischen vier Zeilen
kommentieren mit:

1. Nirgendwo sonst im Programm darf das Register temp2 verwendet
werden.

2. In den Interrupthandler darf später niemals auch nur ein einziger
"tst-", "cpi-", "clr-", "or-" oder sonstiger Befehl eingebaut
werden, der sich auf die Statusflags auswirkt.

Ich halte es für eine sehr gute Idee, in Interrupthandlern
grundsätzlich das SREG sowie alle verwendeten Register auf dem Stack
zu sichern.  Dann kann man nämlich in dem Handler machen was man will -
es kann nichts mehr schiefgehen.

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