Beispiel: Der Capture-Interrupt liest das ICR1 aus und das Main will nen PWM-Wert nach OCR1B schreiben. Beides geht über das selbe temporäre High-Register, also kanns krachen (PWM spinnt). Was ist besser, im Timerinterrupt das High-Register zu sichern oder im Main alle 16-Bit Timerzugriffe atomar zu kapseln? Im Interrupt hat man das nur an wenigen Stellen, im Main können viele verschiedene Zugriffe stehen. Also erscheint im Interrupt sicherer, aber es wird wohl mehr CPU-Zeit verbrauchen. Peter
Ich kenne die AVR Architektur nicht, deshalb kann ich nicht sagen, inwieweit folgendes damit Sinn macht: Wie wäre es die PWM über einen Interrupt nachzustellen der beispielsweise an einem fixen Punkt in der PWM Periode ausgelöst wird (z.B. Compare mit PWM-Zählregister). In der main() Funktion beschreibt man dann eine volatile Variable, welche im Interrupt in das Register übertragen wird. Dieser Interrupt muss dann eine höhere Priorität haben als der Capture-Interrupt.
Peter Dannegger schrieb: > Was ist besser, im Timerinterrupt das High-Register zu sichern oder im > Main alle 16-Bit Timerzugriffe atomar zu kapseln? Gute Frage. Denk jetzt schon eine Weile darüber nach. > Im Interrupt hat man das nur an wenigen Stellen, im Main können viele > verschiedene Zugriffe stehen. Also erscheint im Interrupt sicherer, aber > es wird wohl mehr CPU-Zeit verbrauchen. Die Frage ist aber auch, ob dieser höhere Verbrauch großartig zu Buche schlägt. Aber im Grunde kann man doch die 16-Bit Register auch als eine Art 16-Bit Variable ansehen. Es gelten daher dieselben Regeln, die auch für normale 16-Bit Variablen gelten: atomaren Zugriff sicherstellen Von daher würde ich mich wohl eher für die Variante mit Absicherung im main() entscheiden
Karl heinz Buchegger schrieb: > Von daher würde ich mich wohl eher für die Variante mit Absicherung im > main() entscheiden Ich werds so machen. Das ist dann auch eindeutiger als im Interrupt und entspricht den Anmerkungen im Datenblatt. Mit diesem "halb-atomaren" Timerzugriff hat sich Atmel wirklich nicht mit Ruhm bekleckert. Die paar gesparten Transistoren kosten doch nix. Peter
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.