Forum: Mikrocontroller und Digitale Elektronik Atmega16 - USART empfängt obwohl nichts verschickt?!


von ratatatata (Gast)


Lesenswert?

Hi,
ich hab ein kleines Problem mit USART auf meinem Atmega16, und zwar ist
das RXC-Bit im UCSRA Register ständig gesetzt bzw der Receive-Complete
Interrupt wird ständig aktiviert, auch wenn gar keine Daten an den µC
geschickt werden!
Hat einer von euch ne Ahnung was das sein könnte? Im AVR-Studio
Emulator läuft alles Prima!
Hier mal meine Situation:

-Atmega16
-UBRRL(L/H) auf 1000000/(9600*16)-1 gesetzt
-UCSRC auf (1<<URSEL)|(1<<USBS)|(3<<UCSZ0) gesetzt
-UCSRB auf (1<<RXEN)|(1<<TXEN) gesetzt

Meine Empfangsschleife:

loop:
    sbis UCSRA, RXC
    rjmp loop
            in r16, UDR
            ldi r17, 0x30
            add r16, r17
            rcall lcd_sendData
            rjmp loop

Ach das FE-Bit ist im UCSRA gesetzt, das zeigt doch aber nur an dass
etwas mit den empfangenen Daten nicht stimmt, nicht dass ich den Frame
falsch gesetzt habe?
Hoffe ihr könnt mir helfen!
Mit freundlichen Grüßen,
Karle

von Hermann G. (hahgeh)


Lesenswert?

vielleicht ist nur der eingangspin nicht auf einem definierten pegel
sondern floated

von ratatatata (Gast)


Lesenswert?

hmm, ich hab grad beide pins gegroundet und siehe da ich empfange keine
pseudo daten mehr! (habe ja sogar etwas empfangen ohne dass irgendein
gerät angeschlossen war)

aber was kann ich jetzt dagegen machen dass ich mit angeschlossenem
geräte daten empfangen kann?

von Hermann G. (hahgeh)


Lesenswert?

Wie jetzt du möchtest was "dagegen machen dass du mit angeschlossenem
geräte daten empfangen kannst". :)

was hängt denn für ein gerät dran, hast du noch einen max232 oder
ähnliches dazwischen, der müsste eignetlich immer einen definierten
pegel erzeugen

von ratatatata (Gast)


Lesenswert?

ne kein max232, sondern nen taschenrechner :)

aber ich mach jetzt einfach einen pullup-widerstand dran!

aber schon lustig dass mein zimmer so verstrahlt ist dass der immer was
empfängt ^^

von TravelRec. (Gast)


Lesenswert?

Nicht Dein Zimmer ist verstrahlt, die AVR-Pins sind verdammt hochohmig.
Mit ´nem Stück Draht am RXD kannst Du Radio Moskau digitalisieren ;-).
Aktivier doch den internen PullUp, indem Du
nach der UART-Initialisierung

sbi PortD, 0

programmierst.

von hans dieter (Gast)


Lesenswert?

ich glaube die internen pull-ups werden da nicht reichen die 30k und
mehr sind zu schwach. (sollten so 10k sein)

Was für ein taschenrechner ist es denn?

von ratatatata (Gast)


Lesenswert?

hm.. also mit internem pullup hab ich zwar keine geister daten mehr
empfangen, aber leider auch keine vom taschenrechner mehr ^^
leider hatte ich mit nem 10k externen auch kein glück :/ naja ich hoff
ich habe unsauber gelötet oder so muss nochmal nachschauen...

ist ein Casio fx-9750g, will ne MMC Speichererweiterung mit nem attiny
machen, dann krieg ichs im gehäuse unter :)

von TravelRec. (Gast)


Lesenswert?

Wer sagt denn, daß ein PullUp immer 10k sein muß? Er muß so bemessen
sein, daß die angeschlossene Stromsenke den Pin noch sicher auf 0-Pegel
ziehen kann und außerdem keine Störungen auftreten. Wenn der interne
nicht geht, dann einen externen von vielleicht 100k versuchen -
vielleicht ist der Taschenrechner ja etwas schwach auf der Brust.

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.