Forum: Compiler & IDEs usart mit atmega32 immer das gleiche Zeichen


von martial (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich möchte mit dem atmega32 über den USART Daten senden. Die
Initialisierung habe ich vom Datenblatt übernommen, doch es kommt immer
das gleiche zeichen am Hyperterminal an (àààààààà).
An welcher Einstellung kann das liegen(siehe Sourcecode)? Beim
Hyperterminal wurden folgende Einstellungen vorgenommen:
Bauderate: 9600
Datenbits: 8
Parität: keine
Stoppbits: 1

Danke für die Hilfe

von Stefan Kleinwort (Gast)


Lesenswert?

Falsche Baudrate?
Welche Quarzfrequenz?
externer Quarz eingeschaltet?

Stefan

von Martial (Gast)


Lesenswert?

Die Quarzfrequenz ist 3.68 MHz.

von Alex (Gast)


Lesenswert?

Schreib mal statt 1, 2, 3, 4, 5 lieber
'1', '2', '3', '4', '5'.
Dann sendet er auch die gewünschte Zahle.
Analog für Zeichen z.B. 'x'

Gruß, Alex

von Martial (Gast)


Lesenswert?

Ich habe scho beide versucht und es kommt immer das à Zeichen.

von Stefan Kleinwort (Gast)


Lesenswert?

> USART_Init(0x23);

Bei 3.68Mhz brauchst Du 23(+1) als Vorteiler. Du hast aber 23h = 35
angegeben.
Dann noch Zeichen statt Zahlen übergeben (was Alex gemeint hat), und es
sollte klappen.

Stefan

von Martial (Gast)


Lesenswert?

wenn ich es als 23 dez eingebe kommt nicht einmal mehr das à Zeichen.
gruss martial

von Stefan Kleinwort (Gast)


Lesenswert?

Das muss nicht unbedingt ein schlechtes Zeichen sein ;-))
Gibst Du dabei

  USART_Transmit(1);
oder
  USART_Transmit('1');

aus? Die Binärwerte 0 -  32 siehst Du im Hyperterminal nicht.
Statt Hyperterminal solltest Du übrigens mal das Bray-Terminal
probieren, da siehst Du jeden Output Deines mc ( 0-255), wenn Du bei
Recieve auf HEX schaltest.

Stefan

von martial (Gast)


Lesenswert?

vielen Dank für eure hilfe, ich habe das bray-terminal versucht und
entlich etwas empfangen. juhuu

doch leider war es etwas total anderes, darum habe ich mal den KO
angeschlossen und mal die baude rate heraus gemessen, das resultat ist
doch ein wenig schauderhaft. wenn ich die rate auf 9600 einstelle
bekomme ich eine rate vo 500 :-(. ich glaube da stimmt noch einiges
nicht.
ich lege das mal auf die Seite und kümmere mich mal um etwas anderes
wenn ich die Lösung habe wieso das soo ist, schreibe ich dies natürlich
hier in's forum.

nochmal's vielen Dank für eure tipps
gruss Martial

von Stefan Kleinwort (Gast)


Lesenswert?

schau mal, ob Deine fuses wirklich auf externen Quarz gestellt sind.
Ansonsten werkelst Du mit 1Mhz statt den 3,6Mhz.

Die Baudrate misst Du am besten, indem Du 0AA-hex sendest, dann hast Du
nach jedem Bit im gesendeten Datum einen Flankenwechsel.

Stefan

von Martial (Gast)


Lesenswert?

Vielen Dank Stefan, Du bist mein Retter!!!!
Es funktioniert jetzt, es waren die fuses.

gruss Martial

von Alex (Gast)


Lesenswert?

Oh Mann,

das war die dritte Frage in der ersten Antwort auf deinen Beitrag ...

von Jörg Wunsch (Gast)


Lesenswert?

Außerdem steht's in der (avr-libc) FAQ...

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
Noch kein Account? Hier anmelden.