-
-
Erfahrener Benutzer
Roboter Experte
"Merkwürdiges" Verhalten?
Hi,
ich habe neulich folgendes beobachtet: Und zwar hab ich an einem Mega8 @ 8 MHz intern eine LED hängen, die im Sekundentakt aus - und eingeschaltet wird. An zwei Mega32 @ 16 MHz hängt ebenfalls eine LED, auch diese wird im Sekundentakt aus - und eingeschaltet.
Nun ist es so, dass wenn ich die gemeinsame Spannungsversorgung einschalte, die drei LEDs keineswegs gemeinsam blinken. Ich hätte mir gedacht, dass trotz der unterschiedlichen Takte die LEDs eigentlich gleich blinken müssten, tatsächlich ist das aber nur bei den beiden LEDs an den M32 der Fall, die wirklich genau gleich im Takt sind.
Woran liegt nun dieses "seltsame" Verhalten? Ist es wirklich die Ungenauigkeit des internen Taktes vom M8, oder spielen da auch noch andere Faktoren eine Rolle?
Es geht mir eigentlich dabei nur ums wirkliche Verständnis, warum das nun so ist, und nicht anders...
Hat jemand eine Idee/Vorschlag?
Viele Grüße
ikarus_177
-
Erfahrener Benutzer
Roboter Experte
Ich schätze, dass das an den verschieden langen Einschwingvorgängen der Oszillatoren liegt.
Alle Oszillatoren und Quarze haben charakteristische Einschwingzeiten. Bei zwei "gleichen" Oszillatoren (die mit 16MHz) ist das Einschwingverhalten praktisch gleich, bei dem mit 8MHz ist es jedoch anders.
Ich denke daher rührt das.
-
Erfahrener Benutzer
Roboter Genie
es kann auch sein das in den fuses bei beiden eine andere startup-time eingestellt ist.
wie wird der sekundentakt generiert? wie genau ist er?
gruss bluesmash
-
Erfahrener Benutzer
Roboter Experte
Hi,
also beim internen Oszillator hab ich in den Fuses bei der Start - up - time "6CK + 0ms" stehen, beim externen mit 16 MHz "16CK + 64ms". Aber kann sich das wirklich so auswirken, denn der erste "Puls", da kennt man noch keinen nenneswerten Unterschied, nach einigen Pulsen allerdings ist die eine LED eingeschaltet, und die andere aus! Nach ein paar weiteren Impulsen sind sie wieder fast ident, das verschiebt sich halt so.
Aber der Wert für die start - up - time gibt ja nur an, wie lang der Quarz zum Anschwingen benötigt? Weil dann müsste der Unterschied in der Frequenz ja gleich bleiben, tut er aber nicht.
(Weils gleich mit geht: Was ist denn "CK" bei der start - up - time für eine Einheit? Sind das die Zyklen?)
Viele Grüße
-
Erfahrener Benutzer
Robotik Visionär
Der interne Oszillator ist nicht besonders genau. Gerade bei neueren Chips sind bis zu 10% Abweichung drin. Wenn man es genauer haben will muß man den internen Oszillator calibrieren. Die älteren Chips waren mit +-3 % übrigens genauer, das reichte mit etwas Glück noch für die UART.
-
Erfahrener Benutzer
Roboter Experte
@Besserwessi: und wie kalibriert man den internen Oszillator?
Viele Grüße
-
Erfahrener Benutzer
Robotik Visionär
Zum Feinabgleich der Frequenz gibt es ein Register. Man braucht eine einigermaßen genaue Vergleichsfrequenz (z.B. einen externen Quarz).
Genauer beschrieben ist das in den Atmel Appl. Note 53-55:
http://www.atmel.com/dyn/products/ap...?family_id=607
Alternativ kann man halt die Frequenz nachmessen und das Programm an den etwas anderen Takt anpassen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen