Forum: Mikrocontroller und Digitale Elektronik UART - ATMEGA128 int. Oszilator


von Markus (Gast)


Lesenswert?

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

von Εrnst B. (ernst)


Lesenswert?

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...

von winne (Gast)


Lesenswert?

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.

von Εrnst B. (ernst)


Lesenswert?

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...

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Geht manchmal, geht häufig nicht, ist schon tausendmal ausdiskutiert 
worden, ist eine Scheißidee.

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

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

von Gast (Gast)


Lesenswert?

ist denn F_CPU definiert?

sonst mach mal in über deinem main

#define F_CPU 1000000

von Markus (Gast)


Lesenswert?

ja, das wird im makefile gemacht

von Peter R. (gelb)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

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

von Hubert G. (hubertg)


Lesenswert?

Wie du den Quarz anschaltest siehst du Datenblatt Seite 36.
Welcher Quarz günstig ist siehe Datenblatt Seite 194++

von Markus (Gast)


Lesenswert?

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