mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART ATMEGA32


Autor: Daniel Günther (sirdaniel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche vom µC an den PC nacheiander folgende Integers zu senden:

512
1023
5
21
30
512
915
400

Funktioniert prinzipiell auch, nur leider kommen völlig andere Zahlen im 
Terminal-Programm an:

88
245
132
37
244
133
77
68
245
86
244
132
244

Komisch ist ja schonmal, dass es 13 Zahlen sind statt 8. Der größte Wert 
scheint die 245 zu sein. Was passiert da?

PS: Ich habe das Senden per UART nach dem Tutorial implementiert.

MFG

Daniel

Autor: Ha Jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Daniel,

das sieht sehr nach einer nicht übereinstimmenden Baudrate aus.
Also Dein ATMEGA32 sendet nicht mit der Baudrate, die Du im Terminal
eingestellt hast. Weiter können Anzahl der Stopbits und ein unterschied-
liches Paritybit der Fall sein.
Diese Einstellungen solltest Du nochmal prüfen.
Für die Baudrate im ATMEGA solltest Du prüfen, ob der ATMEGA-CPY-Takt
stimmt, dann die Baudratenregister richtig gesetzt sind.
Im Terminalprogramm natürlich auch prüfen, ob diese Parameter
richtig eingestellt sind.

Wenn Du ein Scope hast, kannst Du es an die Sendeleitung des
ATMEGAS anschließen. Wenn Du kontinuierlich ein 'U' (0x55) sendest und 
mit
1 Stopbit und keinem Parity arbeitest, dann ist auf dem Scope
ein Rechtecksignal zu sehen. Bei 9600 Baud ist die Dauer eines
Bits, also von einer Flanke zur nächsten 1,041msec.

Viel Erfolg
Joachim

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erst mal arbeitet eine UART immer nur Byteorientiert, grössere 
Datentypen als ein char bestehen also aus mehreren Bytes. Die Uart 
selbst kann also keine Integers versenden, dass ist von der 
Sende-Software auf einzelne Bytes aufzudröseln und beim Empfänger wieder 
richtig zusammenzusetzen.

512
1023
5
21
30
512
915
400

Wenn man den jeweils kleinsten möglichen Datentyp nimmt, kommt man dabei 
auf exakt 13 Bytes :-)
Die Werte passen aber nicht zu den empfangenen.
Was genau hast du auf MC- und PC-Seite gemacht? Ohne genauere Infos kann 
man nur Rätselraten.

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um es nochmals deutlich zu sagen:

1023 passt nicht in ein  Byte, da passt maximal 255 rein.

Der mega kann auch 9 bits, damit kommt man dann auf 511 (aber das können 
die wenigsten Terminalprogramme).

Ciao
Willi

Autor: Neubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe auch mal probleme mit oben beschriebenem verhalten gehabt -> bei 
mir warens falsch gesetzte fusebits (ext. crystal xMHz - xMHz, CLKOPT, 
...)

einen genauen grund hab ich damals im datenblatt nicht finden können 
??!?


Neubi

Autor: Ha Jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ crazy horse
@  Willi Wacker

Zu euren Anmerkungen, daß in ein Byte nur 255 dec. reinpassen.....
Ist schon richtig. Habt ihr schon mal ein Terminalprogramm
gesehen, das die empfangen Binärdaten also ein Byte umwandelt
und in dezimal ausgibt???? Ich noch nicht. Also wenn man
ein Byte mit 65 dec. überträgt, wird im Terminal nie 65 angezeigt
sondern ein 'A', weil 65 der code für das 'A' ist.

Also nehme ich an, das Daniel eine ASCII Übertragung vornimmt.
Da kann man dann auch "1888" in 4 Bytes packen.

Joachim


Autor: Marc B. (__marc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habt ihr schon mal ein Terminalprogramm
> gesehen, das die empfangen Binärdaten also ein Byte umwandelt
> und in dezimal ausgibt???? Ich noch nicht.

http://www.der-hammer.info/terminal/hterm.zip

HTERM gibt binär, dezimal, hex und ascii aus.
Man kann ebenso in bin, dez, hex und ascii senden.
Ein sehr schönes Programm...

Gruß
Marc

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Hans-joachim Borchers:
dann muß er sich wohl hier genauer ausdrücken...

>ich versuche vom µC an den PC nacheiander folgende Integers zu senden

Gruß aus Berlin
Michael

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.