PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage: Prescaler



Icon2k
25.12.2010, 15:07
Hy,
Ich habe eine 3x3 LED Matrix und einen ATmega32. Die LED Matrix wird in der "main"-Funktion, bei jedem Schleifendurchlauf multigeplext:

while ( 1 )
{
mp_plex ();
}
An Timer2 habe ich zwischen TOSC1 und 2 einen 32,768kHz Uhrenquarz angeschlossen. Der Timer löst einen Interrupt aus, indem das Bild, das die LED Matrix anzeigt, geändert wird.

Meine Annahme
Das heisst der Timer2 Interrupt müsste pro Sekunde 32768 Mal aufgerufen werden. Wenn ich über TCCR2 den Prescaler auf 32 setze, dann müssten doch immer noch 1024 Interrupts pro Sekunde ausgelöst werden, also 1024 neue Bilder.

Das Ergebnis
Aber es werden nur ca 2 - 3 Bilder pro Sekunde angezeigt. Wo sind die anderen 1020 Bilder/s oder wo liegt mein Denkfehler?

MfG Icon

Icon2k
25.12.2010, 15:12
Ohhhh jetzt kommts .. während des schreibens, Sry. Aber ich habe gedacht ich sende den Beitrag trozdem ab, falls jemand denselben Denkfehler hat:

Es ist ja ein 8Bit Timer, d. H 2^8 = 256, es wird nur alle 256 Quarzschwünge ein Interrupt ausgelöst. Bei einem Prescaler von 32 macht das: 32768 /256 / 32 = 4.
In meinem Fall wären das 4 Bilder pro Sekunde, das könnte hinkommen ^^

TobiKa
25.12.2010, 15:41
Dann benutz doch den Timer1?!

Icon2k
25.12.2010, 15:55
Warum sollte ich Timer1 benutzen .. es ging mir nur um das Verständnis warum ich nur 4 und nicht 1024 Bilder pro Sekunde bekomme. Mit Timer1 hätte ich dasselbe Problem nur mit anderen Zahlen gehabt^^

TobiKa
25.12.2010, 16:09
Ja ok, wären zwar mehr Bilder aber der Fehler bleibt erhalten.

Mal eben etwas anderes, wieviele Bilder kannst du auf der Matrix darstellen, sodass es noch "gut" aussieht?

Icon2k
25.12.2010, 18:17
Was meinst du mit wie viele Bilder?

Wenn du die Multiplexgeschwindigkeit meinst:
Wie du oben siehst wird die Matrix in einer "while"-Schleife multigeplext. Das ist nur zum testen und das Multiplexen wird später in einen Interrupt verschoben. Aber so habe ich keinen Einfluss auf die Zahl
Aber ich meine im RN-Wissen irgenwo 100HZ gelesen zu haben. Also brauchst du pro Sekunde knapp 100 Bilder, damit die LED Matrix, auch wenn du dich bewegest, nicht flimmert. 1 Bild wäre in diesem Fall dann aber ein vollständiger Multiplexvorgang.