Guten Morgen allerseits, folgendes problem: Erzeugung eines PWM-Signals auf einem Atmega328P mit Timer0 auf OC0B, aber ohne einen PWM-Modus (sobald PWM-Mode, werden die OCR-Register gepuffert, und ich muss "die andere Hälfte" des Timers, also OCR0A, laufend ändern) Rein in Software mit zwei Interrupts (Einschalten bei Overflow, ausschalten beim Output Compare Match) kein Problem. ich möchte das aber die Hardware machen lassen, dazu gibts ja die diversen WGM Modi. Problem: Im Nicht-PWM Mode kann ich zwar per WGM den OC-Pin einschalten, ausschalten oder toggeln, aber nur im Output Compare, nicht bei Overflow. Ich kann also per Hardware den Pin beim Erreichen von OCR0B ausschalten lassen, muss ihn aber händisch im Overflow-Interrupt wieder einschalten. Nun ist das Einschalten eines OC nicht ganz so einfach, weil der ja vom Port komplett getrennt ist. Zugriff auf PORTx geht also ins Leere. Ich müsste das WGM umschalten auf "Set on Compare Match", dann per FOC einen Compare Match erzwingen, um dann das WGM wieder auf "Clear on Compare Match" umzuschalten. Das ginge zwar, ist aber ziemlich viel Bit-Schubserei. geht das nicht einfacher? ich könnte zwar statt Set/Clear gleich das Toggle verwenden, dann müsste ich im Overflow nur einen Compare match erzwingen, aber "nur" toggeln ist riskant wenn ich nicht sicher sein kann wie der Ausgangszustand ist. Danke, Michi
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.