Forum: Compiler & IDEs RC-Oscilator mit myAVR atmega88


von Franz-Alexander (Gast)


Lesenswert?

hallo,

ich versuche gerade mit dem atmega88 daten per uart zu senden! aber
irgendwie will das nicht! der prozessor läuft mit 8mhz und ich habe
schon versucht wie es beschrieben ist den rc-Oscilator zu kalibrieren
aber trotzdem funktioniert das nicht! kann mir da jemand mal ein tipp
geben wie man das richtig kalibriert!

gruß

von Wolfgang Horn (Gast)


Lesenswert?

Hi, Franz,

gehe ich Recht in der Annahme, Du hast kein JTAG/ICE mit 1-wire?

Ungetester Code + unsichere Quarzfrequenz - das ist eine Unbekannte
zuviel.
1. Verschaff Dir ordentliches Meßzeug.
2. Reduziere die Zahl der Unbekannten, und debugge das Unbekannte.

Beispiel:
Setze einen Quarz ein, oder speise ein Quarzsignal ein.

Ich behelfe mir, indem ich Programme erst für den Atmega16 entwickle
und mit JTAG/ICE (hab' nur MkI) debugge. Wenn sie dann laufen, dann
schreibe ich sie um auf ATMega8.

Ciao
Wolfgang Horn

von Thomas L. (tom)


Lesenswert?

Hast du die Fuses richtig eingestellt?

Hatte das Problem, dass zwar auf 8MHz eingestellt war, jedoch
zusätzlich noch ein Prescaler mit dem Faktor 8 aktiv war - dies
wiederum resultierte statt einer Baudrate von 9600Baud in 1200 Baud *im
Nachinein eh klar*

von Rolf Magnus (Gast)


Lesenswert?

> der prozessor läuft mit 8mhz

Das ist arg langsam. Da bekommt er ja nur einen Taktzyklus alle zwei
Minuten.

von Holger Gerwenat (Gast)


Lesenswert?

Hi,

es löst zwar nicht das Problem... aber ich bin gerade dabei einen
Sensor aufzubauen, der sein Ergebnis per UART verschickt. Das
wesentliche: Ich bin in mehreren Tests nicht mit einem RC-Oszillator
hingekommen, trotz (recht) langsamen 1200 Baud. Erst mit einem 2 MHz
Quarz scheint es stabil zu funktionieren.

Gruss Holger

von Thomas L. (tom)


Lesenswert?

Ich habe den internen Takt verwendet - absolut keine Probleme bei 9600
Baud

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Man muss beim internen Takt nur auf die Kalibrierbedingung
achten: bei den meisten Chips Vcc = 5 V, Tamb = 25 °C, falls
mehrere Frequenzen möglich sind, ist der Oszillator für 1 MHz
automatisch kalibriert.  In diesem Rahmen ist er durchaus für
UART-Betrieb geeignet, ansonsten muss man nachkalibrieren
(entweder über EEPROM-Werte oder zur Laufzeit dynamisch, falls
man ein anderes Normal hat, z. B. einen 32-kHz-Quarz).

Zu beachten ist natürlich noch, dass 1 MHz nur für 9600 Bd
geeignet ist, wenn man das U2X-Bit setzt und damit das
Oversampling von 16fach auf 8fach reduziert.

Ob man ,nur' mit 1200 Bd oder schneller arbeitet, ist übrigens
(bis auf U2X bei 9600 Bd) egal, da der relative Fehler des
internen Oszillators gleich bleibt, damit auch die möglichen
Abtastfehler eines externen Empfängers.  Wenn die Frequenz nicht
stimmt, dann gehen eben 1200 Bd genauso schlecht wie 9600 Bd.

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.