Forum: Mikrocontroller und Digitale Elektronik Problem mit UART


von Pfi (Gast)


Lesenswert?

Hallo!

Ich habe ein Problem mit meinem ATmega8 und UART. Es will einfach
nicht. Ich habe alles so gemacht wie im Tutorial, software kopiert, und
Hardware gleich auf einem Steckbrett aufgebaut. Nur kommt nur etwas an,
wenn ich den AVR an die Stromversorgung anschliesse bzw. abklemme, dann
kommt kei häufigen Wechesel mal kurz müll auf den Schirm... sonst bleibt
das Hyperterminal weiss. Ich habe mir ein anderes Programm besorgt, dass
mir die angekommenen Daten anzeigt. HTerm. Dort kommt zwar viel mehr an,
jedoch nur fehlerhafte Daten (sind markiert).
Einstellungen wie BAUD und so sollte auch alles stimmen.

Im Datenblatt stand man solle für den MAX232A 0.1uF Kondensatoren
verwenden nicht wie im Tutorial beschrieben 10 bis 50 uF auch dieser
wechsel hat keine Besserung gebracht. Am MAX kann ich die +10V und -10V
messen...
Kann es sein, dass es wegen zu langen Leitungen (auf dem Steckbrett)
nicht funktioniert? Kondensatorn sind ganz nah dran, aber die
Datenleitungen....

Hat sinst noch jemand eine Idee was los sein könnte???

von johnny.m (Gast)


Lesenswert?

Betreibst Du den Mega8 mit internem Oszillator? Wenn ja, vergiss es. Der
ist zu ungenau für UART...

von Magnus Müller (Magnetus) (Gast)


Lesenswert?

@Pfi:

Hast Du berücksichtigt, daß die Register UBRRH und UCSRC auf der selben
Adresse liegen und beim Beschreiben über ein gesetztes / gelöschtes Bit
(ich glaube es heisst "URSEL") unterschieden werden?

Ich habe vor einigen Tagen auch damit zu kämpfen gehabt ;)

Gruß,
Magnetus

von Magnus Müller (Magnetus) (Gast)


Lesenswert?

Ach so... vieleicht können wir Dir besser helfen, wenn Du den Code (als
Anhang) postest.

von Pfi (Gast)


Lesenswert?

Hallo!

Also ich benutze genau den Code aus dem Tutorial hier.
Und ich benutze den internen Oszillator, ist der wirklich so ungenau?
Dann muss ich zwingend einen externen nehmen? Schade...

von Pfi (Gast)


Lesenswert?

Hab grad gesehen, dass man den internen Oszillator auch trimmen kann.
Könnte man das Problem vielleicht so beheben?

von Karl heinz B. (kbucheg)


Lesenswert?

Können tut man schon, nur wollen tut man nicht.
Wenns im Winter kälter wird, driftet dir nämlich der
interne Osc. weg.

von Pfi (Gast)


Lesenswert?

Schade... Aber gibt das nicht probleme mit dem seriellen Programmieren,
wenn man auf eine externe Taktversorgung umstellt?

von Karl heinz B. (kbucheg)


Lesenswert?

Warum sollte es?
Dem Programmierer ist doch ziemlich Wurscht, wo der
µC seinen Takt herbekommt. Hauptsache er hat einen.

Das was du hier immer wieder als neuen Thread liest,
ist ein ganz anderes Problem: Leute die ohne Kenntnisse
an den Fuses rumspielen, die ohne Sorgfalt arbeiten
(Fuses neu schreiben ohne vorher mal die vorhandene Fuse-
belegung eingelesen zu haben), die keine Datenblätter
lesen, kurz und gut: die sich selbst aus dem µC aussperren.

Ansonsten ist die Umstellung auf einen externen Quarz so
einfach wie einem Baby den Schnuller klauen.

von Pfi (Gast)


Lesenswert?

OK, danke! Dann werde ich das so machen...
Dass auf den externen Quarz umstellen einfach ist weiss ich auch, aber
eben, wollte nicht einen AVR abschiessen. Danke nochmals wenns nicht
funktioniert, dann melde ich mich nochmals

von gerd (Gast)


Lesenswert?

Hallo Pfi,

bevor Du die Fuses umprogrammierst, versuche es mal so:

1. Beim Init des UARTs etwa vierzig mal 0xAA oder 0x55 über die
Schnittstelle senden. Das bringt z.B. Seriell-USB-Wandler mit
Auto-Baud-Funktion dann schon auf den richtigen Trichter.

2. Baudrate senken. Bei Baudraten von 9600 ist der Fehler mit dem
internen RC-Oszillator akademisch klein, weil das Signal länger dauert
und die Synchronisation innerhalb der 9 Bits (Startbit + 8 Datenbits)
nicht mehr so arg kritisch, weil die Bits immer nur in der Mitte
abgetastet werden. Bis das letzte Bit so arg verstellt ist, dass es
verpasst wird, muss die Baudrate schon arg daneben liegen.

mfg
gerd

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.