PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Merkwürdiges" Verhalten?



ikarus_177
29.07.2008, 12:28
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

Foooob
29.07.2008, 12:39
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.

Bluesmash
29.07.2008, 13:04
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

ikarus_177
29.07.2008, 18:32
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

Besserwessi
29.07.2008, 19:28
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.

ikarus_177
30.07.2008, 12:00
@Besserwessi: und wie kalibriert man den internen Oszillator?

Viele Grüße

Besserwessi
30.07.2008, 21:08
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/app_notes.asp?family_id=607

Alternativ kann man halt die Frequenz nachmessen und das Programm an den etwas anderen Takt anpassen.