www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit UART


Autor: Pfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: johnny.m (Gast)
Datum:

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

Autor: Magnus Müller (Magnetus) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Magnetus) (Gast)
Datum:

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

Autor: Pfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Pfi (Gast)
Datum:

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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pfi (Gast)
Datum:

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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.