XC164 Timer auf 0.5 Sek

Gast #3416838
Lesenswert?

Hallo,

ich möchte im Rahmen eines Projekts bestimmte LED's für genau 0.5 
Sekunden (oder länger als Ampelsteuerung) zum leuchten bringen. 
Realisiert wird die Steuerung durch eine Statetabelle in der ich die 
Verschiedenen LED's bestimmte Zeiten lang leuchten lasse. Das 
Grundintervall soll 0.5 Sekunden sein hier habe ich noch ein paar 
Probleme um die Zeit genau einzustellen mittels 2 16Bit Timer.

Ich benutze hier T3 im Timer Mode und T2 im Reload Mode.


Clock: 20 MHz
T3:

Konfiguration: Timer Mode, aufwärtszählend, prescaler von 256
T3 Wert im Register: 26473

Berechnung des Prescalers/Wert im Register:

2^(16) - (0.5s * 20MHz/256) = 26473.5

T2:

Wird im Reload benutzt, dh. soweit mir bekannt ist, dass der Wert der 
sich im T2 befindet bei einem Overflow in T3 geschrieben wird.

Daraus folgt dass der Wert gleich dem oben berechneten entsprechen muss 
also 26473. Mir ist bloß völlig unklar warum und wie ich den Prescaler 
einstellen muss.

Sind meine Berechnungen und Einstellungen soweit richtig, sodass das 
ganze 0.5 Sekunden entspricht?

Hier noch der Code falls es jemanden interessiert:

http://codeviewer.org/view/code:394f
#3420747
Lesenswert?

Max schrieb:
> Was macht aber denn genau ein Timer im Reload Mode?
>
> Seinen ihm gegebenen Wert Auf/abzählen mit dem prescale faktor und was
> folgt dann?

Beim Aufwärtszählen erfolgt beim Überlauf ein Setzen seines
Interruptflags und ein (Neu-) Laden des Reloadwertes. Von diesem Wert
aus zählt er dann wieder weiter. Abwärts erfolgt dasselbe wenn der
Zähler = 0 wird.

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