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
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.
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");
Ich habe einen externen Oszillator. Die Bautrate des µC und die von Putty ist auf 9600 Baud eingestellt.
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
Andreas Ott schrieb: > Liegts an meiner Wandlung oder der Baudrate? der Baudrate oder an der falschen Frequenz von deinem µC - Fuse Bits!
Halte doch mal ein Oszilloskop an die Tx-Leitung vom Controller und miß die Bitdauer.
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?
Ich hab die Berechnung von nem Forum raus. Jetzt hab ich die 4MHz mit 16MHz ausgetauscht, da ich nen 16MHz Oszi habe. Aber jetzt tut sich bei Putty nichts mehr. Kann das sein dass ich da was falsch verstehe?
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?
Ich arbeite mit einem 16MHz Quartz auf meinem Board. Fuse bits habe ich defaultmäßig eingestellt. Clock Source = int RC Osc.; Start up time: 6 CK +65ms kann aber keinen Ext OSC mit 16MHz auswählen. Wie gebe ich im Makefile direkt die F-CPU an? Danke für deine Mühe
Andreas Ott schrieb: > Fuse bits habe ich defaultmäßig eingestellt. > Clock Source = int RC Osc.; Also läuft er mit 1 MHz und nicht 16 MHz.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.