Forum: Mikrocontroller und Digitale Elektronik Interruptsproblem


von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend Kollegen, es geht um ein Programm in Assembler. Ich habe den 
Ablauf bei AVR Studio simulieren gelassen. Es gibt eine Kleinigkeit, die 
ich nicht verstehe. Wenn Overflow-Interrupt ausgelöst wird. Dann werden 
Flags OCF0B und OCF0A in TIFR-Register gesetzt. Das bedeutet, wenn 
später CompareMatch_A- und CompareMatch_A-Interrupt  aktiviert wird. 
Dann werden die Interrups sofort ausgelöst. Das möchte ich nicht.
 Wie kann man das Problem beseitigen?

: Verschoben durch Moderator
von Michael U. (amiga)


Lesenswert?

Hallo,

Alex schrieb:
> Wenn Overflow-Interrupt ausgelöst wird. Dann werden
> Flags OCF0B und OCF0A in TIFR-Register gesetzt.

Das ist erstmal völlig falsch ausgedrückt...
Die Flags werden gesetzt, wenn a) das zugehörige Mask-Bit gesetzt ist 
und b) der CompareMatch aufgetreten ist. Dann wird ein Interrupt 
ausgelöst...

> Das bedeutet, wenn
> später CompareMatch_A- und CompareMatch_A-Interrupt  aktiviert wird.
> Dann werden die Interrups sofort ausgelöst. Das möchte ich nicht.
>  Wie kann man das Problem beseitigen?

Wenn sowas beim Initialisieren des Timers passiert oder weil der Timer 
schon läuft, bevor man die globalen Interrupts freigibt und man das 
nicht will, dann kann man die Flagbits durch Schreiben einer "1" auch 
von Hand löschen.

Datenblatt...

Gruß aus Berlin
Michael

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
Noch kein Account? Hier anmelden.