Warum wird beim ATtiny bei korrekt initialisiertem Timer TCA0 für PWM das CMP1 Interrupt-Flag gesetzt, wenn CNT ungleich CMP ist?

Antwort

Das CMP1-Interrupt-Flag (Compare Match 1) beim ATtiny (z. B. ATtiny1614, ATtiny817 etc.) im Zusammenhang mit dem Timer/Counter TCA0 wird gesetzt, **wenn der Zählerstand (CNT) den Wert des Compare-Registers (CMP1) erreicht oder überschreitet**. Das bedeutet, das Flag wird **nicht nur dann gesetzt, wenn CNT exakt gleich CMP1 ist**, sondern auch, wenn der Zählerstand das Compare-Register „überholt“ hat, z. B. durch einen Sprung oder weil das Flag nicht rechtzeitig gelöscht wurde. **Mögliche Ursachen, warum das CMP1-Flag gesetzt ist, obwohl CNT ≠ CMP1:** 1. **Flag wurde nicht gelöscht:** Das Interrupt-Flag bleibt gesetzt, bis es durch Software (z. B. durch Schreiben einer 1 in das Flag) gelöscht wird. Wenn du das Flag im Interrupt nicht korrekt zurücksetzt, bleibt es gesetzt, auch wenn CNT inzwischen einen anderen Wert hat. 2. **CNT hat CMP1 übersprungen:** Wenn der Timer sehr schnell läuft oder der Compare-Wert geändert wurde, kann es passieren, dass der Zählerstand den Compare-Wert „überspringt“. Das Flag wird trotzdem gesetzt, sobald CNT ≥ CMP1 ist. 3. **Automatisches Löschen nur bei bestimmten Modi:** In manchen Betriebsarten (z. B. im Single-Shot-Modus) wird das Flag automatisch gelöscht, in anderen nicht. Prüfe, in welchem Modus dein Timer läuft. 4. **Mehrere Compare-Events:** Wenn mehrere Compare-Events auftreten, bevor das Flag gelöscht wird, bleibt es gesetzt. **Zusammengefasst:** Das CMP1-Interrupt-Flag zeigt an, dass **irgendwann seit dem letzten Löschen** CNT den Wert von CMP1 erreicht oder überschritten hat. Es bleibt so lange gesetzt, bis du es explizit löschst. Es ist also normal, dass das Flag gesetzt ist, auch wenn CNT aktuell nicht mehr gleich CMP1 ist. **Datenblatt-Referenz:** Siehe z. B. das Datenblatt des [ATtiny1614](https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny1614-1616-1617-DataSheet-DS40002204A.pdf), Abschnitt „Timer/Counter Type A (TCA) – Interrupts and Flags“. **Tipp:** Im Interrupt-Handler immer das entsprechende Flag löschen, um unerwünschte Interrupts zu vermeiden.

Kategorie: Elektronik Tags: ATtiny Timer PWM
KI fragen

Verwandte Fragen

Welcher Kondensatorwert eignet sich zur Entstörung eines 12V DC Motors (5A), der von einer H-Brücke mit 1000Hz PWM angesteuert wird?

Für die Entstörung eines 12V-DC-Motors, der mit einer H-Brücke und PWM (1000 Hz) betrieben wird, empfiehlt sich in der Praxis meist ein Keramikkondensator mit einem Wert zwischen **10 n... [mehr]

Kann ich mit dem SFH610 Optokoppler ein PWM-Signal mit 1 kHz und 255 Stufen (0–100 %) zur Ansteuerung einer MOSFET-Brücke nutzen?

Der **SFH610** ist ein Optokoppler, der zur galvanischen Trennung von Signalen verwendet wird. Grundsätzlich kannst du mit ihm ein PWM-Signal (Pulsweitenmodulation) übertragen, aber es gibt... [mehr]