UART Problem (Atmega 32)

Gast #167964
Lesenswert?

Hallo, ich möchte zum testen meines Atmels einfach nur etwas am PC
ausgeben. Anstatt der gewünschten ausgabe wir aber immer nur ein Ç
ausgegeben. Kann jemand sagen was ich falsch mache? Die Einstellungen
am PC (Baudrate, Frameformat hab ich schon mehrmals überprüft).

Danke!
Angehängte Dateien:
Gast #167968
Lesenswert?

"Benutzt Du den internen RC Oszillator ?

Der ist wohl für serielle Datenkommunikation zu ungenau. Benutzt mal
nen Quarz."

Nein, das ist so nicht richtig. Die serielle Schnittstelle ist ziemlich
tolerant, was Abweichungen angeht.
Check lieber mal die Verkabelung und die Einstellungen in der
Software.

Bei mir funktioniert das immer mit dem internen RC.
Gast #167970
Lesenswert?

also der Internet RC längt völlig
ich hätte auch drauf getippt dass der Grundtakt nicht stimmt von deinem
µController.
Oder du hast die Teiler falsch programmiert....

Haste ein Oszi greifbar ? Dann könntest du es nachschauen
Gast #167971
Lesenswert?

Naja, sooo tolerant ist die Schnittstelle auch nicht, mehr als 1-2%
sollte da nichts abweichen. Wenn du ein Oszilloskop hast, messe einfach
mal die Bitdauer.

Gruß
Thorsten

P.S.: Bei mir ging bisher der intern Oszillator (8 MHz) auch immer bis
38400 Baud problemlos, die Bitdauerabweichung war aber auch immer <2%.
Gast #167972
Lesenswert?

Oszi hab ich leide keins.
 Aber Wie muss ich die Fuse Bits einstellen damit der Quarz richtig
genutzt wird? möchte einen 8 Mhz Quarz benutzen aber aus dem Datenblatt
werde ich nicht so richtig schlau?!

Danke!
Gast #167973
Lesenswert?

Hi,

Also ich habe mit dem internen RC Ozillator auch Probleme gehabt. Und
ich meine sogar ich hatte auch diese komischen Cs.

Umschalten auf externen Osc hat geholfen.

Mag sein das damals die Baudrate/eingestellte Clock nicht gut gewählt
war. Aber ich habe auch schon gelesen, dass extern die bessere Wahl
ist.
(Vgl. Temperatur-/Langzeitstabilität)

Gruß Niels
Gast #167974
Lesenswert?

UART-Kommunikation mit RC ist Murks, auch wenn es da und dort
funktioniert. Solange das Teilchen auf dem temperierten Schreibtisch
bei gleichbleibenden 22° liegt, mag das gut gehen - in der harten
Wirklichkeit nicht. Verstehe nicht, warum man nicht den
20Cent-Resonator spendieren soll.
Gast #167975
Lesenswert?

Hallo!
Möchte ja gern den externen benutzen, weiss aber leider nicht wie ich
das anstellen soll. Ich glaub das geht über die Fuse Bits ( ja ich bin
Anfänger ) oder? Hab das schon versucht und jetzt erkennt Ponyprog den
Atmega gar nicht mehr. Kann mir jemand sagen wie ich die F-Bits richtig
setzen muss damit das beim zweiten Atmega nicht auch passiert?
Danke
Gast #167976
Lesenswert?

Nicht umsonst gibt es ja das OSCCAL Register, mit dem man den internen
Oscillator kalibrieren kann. Auf der Amtel Seite gibt es dazu eine
Application Note dazu.

meine testroutine schreibe ich mit Winavr

#define test  <hier den Wert einsetzen>
DDRA = 0xff;
OSCCAL = test;

while(1)
{
PORTA ~= PORTA;
}
dafür brauch er genau 10 Takte also Frequenz an den Ports messen
multiplizieren mit 10 und dann hat man die Frequenz des internen
Oscillators. Bei zu starken abweichungen die Variable,Konstante,
#define Makro oder was auch immer verändern, neu programmieren
Frequenz messen vergleichen, und nach spätestens 10 durchläufen
hat man die gewünschte Frequenz. Damit habe ich bisher jede RS232 zum
laufen gebracht. Den Quartz kann man sich schenken, wenn man nicht
gerade den Atmega mit über 8Mhz betreiben will.

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