mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega32 Uart - Anzeige falscher Zeichen


Autor: SWERP (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wir haben zur Zeit ein Problem mit der Datenübertragung vom ATMega32 zum 
PC.
Die Spezifikationen sind im Anhang angegeben.
Statt einem A kommt im Terminalprogramm(Cutecom) Hex: 0e c0 fe
--> ASCI: Àþ
Wir nutzen den FTDI-Chip 232.

Kann uns jemand sagen wo unser Fehler liegt?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1MHz heisst vermutlich interner Takt. Der ist nicht genau genug, für 
egal welche Baudrate.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist praktisch immer das Resultat einer falschen Baudrate. Und die 
resultiert wiederum fast immer aus einem falschen Takt. "Falsch" 
entweder im Sinne von "zu ungenau" (interner Oszillator?) oder von 
"andere Taktquelle als erwartet" (Fuses?).

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man eigentlich mit dem FTDI-Chip 232 in jeder belibigen Baudrate 
sprechen. Sprich: erkennt der die Baudrate selbsttätig?


Edit:
mitlerweile nachgegoogelt. Der FT-232 wird per USB auf die Baudrate 
eingestellt.

  usart_init(600UL); // init USART


600 Baud ist eine unübliche Baudrate. Sicher, dass ihr den Chip auf 
diese Baudrate konfiguriert habt?

Warum ich frage:
Klar, der interne Oszillator ist nicht so genau. Aber so daneben ist er 
auch wieder nicht, dass aus 1 gesendetem Byte 3 Bytes auf der 
Empfangsseite werden.

Autor: SWERP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also,

nachdem wir du Fuses falschgesetzt hatten ging erstmal gar nichts mehr.
Zuhause habe ich jetzt, das ganze mit dem STK500 behoben und den Takt 
intern auf 4MHz gestellt.

Als Baudraten wurden 300, 1200 und 2400 ausprobiert.
Bei allen kommt auf dem Terminel Hex: FF --> ASCI: ÿ an.

Die Baudraten wird im Terminalprogramm natürlich auf den selben Wert 
geschalten.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x41 => 0x0E,0xC0,0xFE entspricht grob Faktor 2 bei der Baudrate
(Sender > Empfänger).

0x41 => 0xFF heisst, dass die Baudrate des Senders eine Grössenordnung 
unter der des Empfängers liegt.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:

> 0x41 => 0xFF heisst, dass die Baudrate des Senders eine Grössenordnung
> unter der des Empfängers liegt.

Argumentation? Ich würde nämlich eher sagen, dass dann die Baudrate des 
Senders eine Größenordnung über der des Empfängers ist.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, in beiden Fällen ist es grad andersrum ;-). Zeiten im Kopf und 
Frequenzen in den Fingern gibt Unsinn.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, also damit keine Missverständnisse aufkommen:
0x41 => 0xFF = Sender ist viel schneller als der Empfänger.

Autor: SWERP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So dass Programm oben läuft jetzt. Hab alle einstellungen im Compiler 
nochmals übernommen und die Baudrate auf beiden Seiten überprüft.

Wenn ich das ganze jetzt aber auf 2 Dateien aufteile (also usart_init 
und usart_putc in eine Datei namens uart.c den Rest in microc.c) und das 
ganze wie folgt kompiliere:

avr-gcc -mmcu=atmega32 -O0 -c microc.c -o microc.o
avr-gcc -mmcu=atmega32 -O0 -c uart.c -o uart.o
avr-gcc microc.o uart.o -mmcu=atmega32 -o project.out 
-Wl,-Map,project.map
avr-objcopy -P .eeprom -O ihex project.out project.hex

und die project.hex dann flashe, dann kommt wieder ein falsches 
ergebnis. Setze ich die beiden Dateien falsch zusammen?

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.