Hallo Leute, lacht mich bitte nicht aus, aber ich hab erst angefangen mit den uCs und versuche mich ein wenig einzuarbeiten. Ich habe jetzt einen ATMEGA128 hier und versuche über die serielle Schnittstelle Daten zwischen meinem uC und dem PC zu übertragen. Geschwindigkeit und dergleichen sind mir derzeit vollkommen egal. Das Problem ist, der uC sendet zwar was, aber nur undefinierbare Zeichen. Ich denke mal, das liegt daran, dass ich keinen Quarz, sondern den internen Oszilator des ATMEGA verwende. Leider ist die Platine auf der der uC ist fertig aufgebaut. Meine Frage ist, gibt es eine Möglichkeit oder hat jemand ein Beispiel, wie ich das zum Laufen kriege? Wie gesagt, die Geschwindigkeit ist mir egal, im Prinzip möchte ich nur Text zwischen uC und PC hin und her schicken ... Danke Markus
Dann stells doch mal auf 300Baud und schau obs geht. Wenns dann immer noch nur Zeichensalat gibt, ist was anderes falsch, z.B du berechnest die Baudrate für 8MHz, hast aber die CLKDIV Fuse gesetzt und damit nur 1MHz...
Ja das geht. Du must die Baudrate auf 300 Bd berechnen und in deinem Programm einstellen. Dann sollte es auch mit dem internen 1MHz Generator funktionieren 2,4 KBaud sollten gerade noch gehen vielleicht sogar 4,8 KBd.
winne wrote:
> 2,4 KBaud sollten gerade noch gehen vielleicht sogar 4,8 KBd.
Diese Aussage ist Gefährlich.
Nein, nicht wegen Übertragungsfehlern, wegen den 200 Posts mit "Geht /
Geht nicht / Geht bei mir mit 1MBaud" die jetzt unweigerlich folgen...
Geht manchmal, geht häufig nicht, ist schon tausendmal ausdiskutiert worden, ist eine Scheißidee.
Also, erst mal danke für die raschen Antworten, aber ich glaub, ich bin einfach zu blöd für die Geschichte ... Ich krieg immer noch Zeichen-Salat ... Den Oszilator hab ich jetzt auf 1000000 eingestellt, die Baud-Rate auf 300 und es haut trotzdem nicht hin :o( Vielleicht liegt es auch daran, dass ich das mit den Fusebits noch nicht so ganz durchschaut hab ... oder an meinem Makefile oder so ... Ich verwende WinAVR ... ich hab mal eine Zip-Datei angehängt, welches mein Programm sein soll ... vielleicht spinnt auch mein uC??? Vielleicht hat mal jemand kurz Zeit und schaut sich das an, was ich da verbrochen hab und kann mir vielleicht ein wenig helfen. Danke, Markus
ist denn F_CPU definiert? sonst mach mal in über deinem main #define F_CPU 1000000
Du solltest die Clock-Konstante auf die tatsächliche Freuenz deines Controller-Exemplars einstellen (vorher messen). Wenn dann der Baudratenteiler groß genug ist (etwa 100? 600Baud? habe die Tabelle nicht da) und damit eine ausreichend feine Abstimmung ermöglicht (1%), hast du gewonnen. Die Baudteilerberechnung muss natürlich F_CPU benützen... Grüße, Peter
Das mit dem Messen ist nicht so einfach ... ich hab leider kein Messgerät dafür. Aber so wie ich das verstehe, kann man davon ausgehen, dass das an der Taktfrequenz des Controllers liegt? Wenn ich also einen externen Quarz verwende (vielleicht sogar einen Baudratenquarz) dann sollte das funktionieren? Hat vielleicht jemand von euch einen Schaltplan zur Hand, wie so eine Schaltung aussehen könnte? Es geht mir nur um die Grundschaltung, ohne die I/O-Pins und so. Welchen Quarz würdet Ihr nehmen, wenn der uC mit möglichst 16 MHz laufen sollte? Danke
Wie du den Quarz anschaltest siehst du Datenblatt Seite 36. Welcher Quarz günstig ist siehe Datenblatt Seite 194++
Ok, danke, dann werde ich mir das mal zu Gemüte führen. Danke für Eure Geduld.
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.