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
Max schrieb: > einzustellen mittels 2 16Bit Timer Wofür 2 Timer? Du stellst einen Timer auf einen Wert von 1ms, 10ms oder so etwas ein. Mit einer Zählevariablen in der ISR kannst du jetzt jeden beliebigen vielfachen Wert einstellen.
Die 0,5 s sind halt bei 20-MHz-Takt nicht exakt zu treffen. Mit T3 downcounting und Reload durch T2 bei einem Vorteiler von 256 beträgt der Reloadwert (nach meiner Rechnung) 39062,5, also stimmt deine Rechnung wohl.
Guido B. schrieb: > und Reload durch T2 Ja klar! Es geht um die GPT1. Sorry, ich war ganz wo anders unterwegs.
Only One schrieb: > Ja klar! Es geht um die GPT1. Sorry, ich war ganz wo anders unterwegs War schon o.k., mit deinem Tip schafft er auch die 0,5 s exakt.
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?
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.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.