Atmega644 RS323 auf Putty

OP #2158640
Lesenswert?

Hallo Zusammen,
ich bin ein Neuling mit Atmelcontroller.
Ich versuche momentan eine ADC durchzuführen und über RS323--> USB 
Converter auf meinen Laptop zu übertragen.
Die ADC Wandlung funktioniert soweit, da ich mir auch gleichzeitig mit 9 
LED´s grob den Wert anzeigen lassen.
Meine übertragung zu Putty passt soweit auch.
Mein einziges Problem ist, dass ich bei Putty nur Hieroglyphen sehe.
Genauer gesagt, wenn ich bei Putty "ISO-8859-1:1998 (Latin-1, West 
Europe)"
einstelle, bekomm ich sowas: xøøøxxxxxøxxxxøøøxøx
bei anderen Formaten wie "UTF-8" bekomm ich 
sowas:▒▒▒▒▒▒x▒▒▒x▒x▒▒▒▒▒▒▒▒▒▒▒
Wo liegt mein Fehler.
Ich habe meiner Meinung nach richtig gewandelt.
Mein Source Code hab ich in den Anhang gepackt.
Vielen Dank im Voraus
Angehängte Dateien:
Gast #2158648
Lesenswert?

Verwendest du einen Quarz für deinen Controller und hast du die 
Übertragungsgeschwindigkeit bei Sender und Empfänger gleich eingestellt?
Deine Daten sehen so aus, als ob er Empfänger zu schnell ist.
Gast #2158655
Lesenswert?

ein paar dinge sind auf jeden Fall falsch oder ungünstig

in USART_Puti

dtostrf ist für double/float - du hast aber int
dein String s ist nur 3 zeichen lang, das reicht aber nicht wenn du 3 
stellen haben willst, es fehlt platz für das 0 byte.




Dann Prüfe erstmal ob die übertragung überhaupt geht.

USART_Puts("Hallo World\n");
OP #2158715
Lesenswert?

Hab jetzt mal den Rat von Peter II verfolgt.
Bekomm was über Putty auf meinen Bildschirm.
Sieht wie folgt aus:

xøxxxøøxøxøøøxx

Wenn ich die Baudrate bei Putty auf zB 4800 verändere, verändern sich 
die Zeichen in äo`....... Aber immernoch total unplausibel.
Liegts an meiner Wandlung oder der Baudrate?
Vielen Dank für eure Hilfe
Gast #2158729
Lesenswert?

dein Problem ist das du

#define F_CPU 16000000UL

das nach der #include "USART.h" machst und in USART.h steht drin.

#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 
4000000"
#define F_CPU 4000000UL  // Systemtakt in Hz - Definition als #endif


kann es sein das du die warnung ignorierst? Wer ist eigentlich auf die 
dumme Idee gekommen dort einfach 4Mhz einzutragen wenn nichts drin 
steht?
Gast #2158766
Lesenswert?

Andreas Ott schrieb:
> Jetzt hab ich die 4MHz mit 16MHz ausgetauscht, da ich nen 16MHz Oszi
> habe.
du sollst nichts austauschen, sondern es richtig machen. Das

#define F_CPU 16000000UL

muss als erstes gemacht werden, wichtig vor include UART und vor include 
delay sonst stimmen alle zeiten nicht. Normalerweise sollte man es in 
dem makefile mit aufnehmen und nicht in den code schreiben, dann weiss 
man wenigistens das es an alles stellen richtig ist.

Hast du nun ein Oszi an deinem µC oder ein Quarz? Weiss das Atmel auch 
schon davon - hast du die fuse richtig einstellt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren