Ich betreibe einen AtMega16 und nutze alle seine 4 Timer für PWM Geschichten . Nun wollte ich allerdings noch einen Interrupt jede Sekunde erzeugen damit ich meine Farbwechselfunktion für die LEDs bedienen kann . Der einzige Weg der mir einfiele wäre zb das Overflow Interrupt von einem der Timer . Soweit ich weiß wird dieses bei PWM aber nicht ausgelöst oder ?. Ich nutze bei allen 4 Timern übrigens Phase Correct PWM und hab ein 11059200Hz Quarz . Hat irgendjemand eine Idee wie ich das anstelle ?
Welche Timer-Interrupts ausgelöst werden, ist nicht vom Wave Generation Mode abhängig, sondern vom TIMSK-Register.
Und icch dachte, der Mega 16 hat nur 3 Timer... Aber sei's drum. Du kannst serwohl noch den OVL Interrupt nutzen.
Klar mit den 3 Timern stimmt schon .Hatte mich da jetzt etwas blöd ausgedrückt .Meinte mehr meine Compare Outputs davon habe ich 4 :P . Ok ich versuche mal dennoch einen Interrupt für den Farbwechsel zu nutzen
Andre schrieb: > Der einzige Weg der mir einfiele wäre zb das Overflow Interrupt von > einem der Timer . > Soweit ich weiß wird dieses bei PWM aber nicht ausgelöst oder ?. Dann schauen wir doch einfach in der Beschreibung des Phase Correct Mode, z.B. beim Timer 1, nach:
1 | The Timer/Counter Overflow Flag (TOV1) is set each time the counter reaches BOTTOM. When |
2 | either OCR1A or ICR1 is used for defining the TOP value, the OC1A or ICF1 Flag is set accord- |
3 | ingly at the same timer clock cycle as the OCR1x Registers are updated with the double buffer |
4 | value (at TOP). The Interrupt Flags can be used to generate an interrupt each time the counter |
5 | reaches the TOP or BOTTOM value. |
Du hast also sogar die Wahl, ob Du die Interrupts oben und/oder unten haben möchtest.
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.