Servus beisammen, erstmal kurz zum Hintergrund: Ich möchte 2 Pins an meinem uC unabhängig voneinander kurze Impule abgeben lassen. Die Periodendauer von Puls zu Puls an jedem der Pins ist eine Funktion der vorangegangenen Periodendauer. (Taktpulse für 2 Schrittmotoren) Ich dachte mir folgendes: ein Comparematch-Interrupt (z.B. Timer0 trifft OCR0A) wird ausgelöst, der Pin wird getoggelt, die neue Periodendauer in Zählertakten wird berechnet und auf den aktuellen OCR0A draufgerechnet, und wieder in OCR0A gespeichert. Abschließend wird der Pin zurückgetoggelt. Nun frage ich mich jedoch, was das für Auswirkungen mit diesem Doubled Buffered Register haben wird und ob es Möglichkeiten gibt Probleme zu umgehen. Es könnte ja schließlich sein, dass ein Interrupt bei Timerwert 1 ausgelöst wird, und ein Weiterer 200 Zählertakte später ausgelöst werden soll. Mit den gepufferten Registern würde das ja nach meinem Verständnis nicht funktionieren. Hat jemand einen Rat für mich? lg Niels
Die "Double Buffered Output Compare Registers" hast du ja nur in den PWM-Modes. Deine Anwendung klingt ja aber eher danach, dass du den Zähler im Normal-Mode durchlaufen lassen willst. Und da werden die Output-Compare-Register sofort aktualisiert.
Ja richtig, der Timer soll ganz Normal ohne PWM laufen. Ach ist das dieses "Update of OCRx at"? Btw.: Wo ist dabei der entscheidende Unterschied zwischen TOP und BOTTOM? Ist das wirklich "nur" dieser eine Zählerschritt, oder hat das tiefgründigere Auswirkungen?
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.