ATMega32 Uart - Anzeige falscher Zeichen

Gast #1361287
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?
Angehängte Dateien:
#1361307
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?).
#1361541
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.
Gast #1361638
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.
#1361669
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.
Gast #1361765
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.