Hallo, ich habe eine Einstiegsfrage zu Timern bei Mikrocontrollern. Ist es denn möglich, den Überlauf (Overflow) bei Timern zu verändern? So wie ich das verstanden habe, wird jeder Zählschritt vom Timer entweder durch den Takt, externen Quarz oder durch ein externes Signal gesteuert. Dabei hängt der Überlauf immer von der Wortbreite des Zählerregisters ab. Durch Prescaler kann nur die Frequenz beeinflusst werden, in der jeder einzelne Zählschritt abläuft.... Habe ich das so weit richtig verstanden? Nun gibt es aber doch z.B. Timer-Interrupts, die bei einem benutzerdefinierten Zählschritt des Timers auslösen. Wird da der Überlauf irgendwie modifiziert, oder einfach nach dem definierten Wert wieder zurückgesetzt? Und wie sieht die manuelle Rücksetzung des Zählers aus, wer oder was ist dann für die vorläufige Löschung der Bits im Zählregister zuständig? ;) Ich hoffe, ihr könnt meine Frage nachvollziehen
Es gibt verschiedene Varianten. Es kann sein, dass der Zähler bei einem bestimmten Wert einen Interrupt auslöst und dann bis zum Überlauf weiterläuft oder er löst den Interrupt aus und wird zurückgesetzt. Manche Timer haben mehrere Modi. Da muss man das dann entsprechend konfigurieren.
Du kannst auch den Timer auf einen Wert größer 0 voreinstellen, damit erreichst du eine beliebige Taktzahl
frojk schrieb: > Hallo, ich habe eine Einstiegsfrage zu Timern bei Mikrocontrollern. Welcer Timer in wellchem Microcontroller? > Ist es denn möglich, den Überlauf (Overflow) bei Timern zu verändern? So > wie ich das verstanden habe, wird jeder Zählschritt vom Timer entweder > durch den Takt, externen Quarz oder durch ein externes Signal gesteuert. Kann man so sagen. > Dabei hängt der Überlauf immer von der Wortbreite des Zählerregisters > ab. Kommt auf den Timer und den Microcontroller und dessen Konfiguration an. Der maximale Überlaufwert ist von der Breite, nicht Wortbreite des Zählregisters abhängig. > Durch Prescaler kann nur die Frequenz beeinflusst werden, in der > jeder einzelne Zählschritt abläuft.... Habe ich das so weit richtig > verstanden? In etwa. Leg dich auf einen Timer in einem Microcontroller fest. Die Vielzahl an Typen sind Fehler bei Verallgemeinerungen vorprogrammiert. > Nun gibt es aber doch z.B. Timer-Interrupts, die bei einem > benutzerdefinierten Zählschritt des Timers auslösen. Wird da der > Überlauf irgendwie modifiziert, oder einfach nach dem definierten Wert > wieder zurückgesetzt? Interrupt und Reset des Timers sind zwingend nicht voneinander abhängig. > Und wie sieht die manuelle Rücksetzung des Zählers aus Manuelle? Eher programmierte, oder? > , wer oder was ist dann für die vorläufige Löschung der Bits im > Zählregister zuständig? ;) Der Programmierer > Ich hoffe, ihr könnt meine Frage > nachvollziehen Konkrter µC und Timer innerhalb des µC? Dann Datenblatt zum µC. Und https://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer Im Artikel wird auch nur auf spzifische Timer eingegangen.
frojk schrieb: > Hallo, ich habe eine Einstiegsfrage zu Timern bei Mikrocontrollern. Verschiedene µC haben sehr verschiedene Timer. Typischerweise hat ein µC sogar mehrere Timer, die sich unterschiedlich verhalten. Es wäre sinnvoll gewesen, wenn du spezifischer gefragt hättest. > Ist es denn möglich, den Überlauf (Overflow) bei Timern zu verändern? Dieser Frage kann ich keinen Sinn entnehmen. > Dabei hängt der Überlauf immer von der Wortbreite des Zählerregisters > ab. Jein. Bedingt durch die endliche Breite wird jeder Zähler früher oder später überlaufen. Aber die meisten Zähler kann man so konfigurieren, daß sie auch bei einem anderen Zählerstand überlaufen. Wobei "überlaufen" hier eigentlich nicht das richtige Wort ist. Korrekter springen sie entweder zum Startwert zurück oder ändern ihre Zählrichtung. > Nun gibt es aber doch z.B. Timer-Interrupts, die bei einem > benutzerdefinierten Zählschritt des Timers auslösen. Wird da der > Überlauf irgendwie modifiziert Der allgemein übliche Begriff für den (hardwaremäßigen) Vergleich des Zählerstands mit einem vorher festgelegten Wert ist compare match. Und der Interrupt dazu ist der compare match interrupt. Mit dem Überlauf des Zählers hat das an sich erst mal nichts zu tun. Allerdings kann man viele Zähler so konfigurieren, daß sie eben dieses compare match Ereignis dazu verwenden, wieder zum Startwert (typisch: 0) zurück zu springen. Der übliche Begriff dafür ist CTC Modus, wobei CTC für Clear Timer on Compare match steht. > Und wie sieht die manuelle Rücksetzung des Zählers > aus, wer oder was ist dann für die vorläufige Löschung der Bits im > Zählregister zuständig? Das Zähler-Register kann in den meisten Fällen vom Programm direkt geschrieben werden. Allerdings gibt es Feinheiten zu beachten. Wenn das Register breiter ist als die Wortbreite des Prozessors, muß es in mehreren Zugriffen beschrieben werden. Meist müssen die dann in einer bestimmten Reihenfolge stattfinden und erst der letzte Schreibzugriff setzt alle Bits des Zählerregisters auf einmal. Wieder andere Timer haben zwar ein Register für den neuen Wert, das man beschreiben kann, übernehmen den Wert aber erst mit dem nächsten Zählereignis in den eigentlichen Zähler. Das Datenblatt deines µC erklärt alle Details zu den Timern. Lies es!
Ich habe gerade so etwas: The 32-bit Timer Counter register is incremented when the prescale counter reaches its terminal count. Unless it is reset before reaching its upper limit, the Timer Counter will count up through the value 0xFFFF FFFF and then wrap back to the value 0x0000 0000. This event does not cause an interrupt, but a match register can be used to detect an overflow if needed.
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.