Mega 48/88, Frage zu den "Double Buffered Output Compare Registers"

Gast #1696588
Lesenswert?

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
Gast #1696619
Lesenswert?

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?
Angehängte Dateien:

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