Forum: Mikrocontroller und Digitale Elektronik interrupt bewusst verlieren? (atmega 32)


von Clemens K. (clemensk)


Lesenswert?

Hallo,

ich habe benutze jetzt Interrupts mit meinem Atmega. Da wird jetzt bei 
einem Taktsignal ein Interrupt ausgeführt.

Jetzt deaktiviere ich mit cli(); die Interrupts. Dadurch geht jedoch der 
Interrupt der durch das Taktsignal aktiviert wird nicht verloren, 
sondern wird ausgeführt wenn mein Hauptprogramm durch ist. Das ist 
soweit in den häufigsten Fällen richtig. Ich möchte jedoch nach cli(); 
das die Interrupts ignoriert und verworfen werden, also nicht nach dem 
sei(); ausgeführt werden. Wie mache ich das?

Meine erste Lösung wäre jetzt das abfragen der Taktflanke mit Polling zu 
realisieren. Das erscheint mir aber nicht so elegant.. also daher die 
Frage: kann man interrupts wegwerfen?

von Purzel H. (hacky)


Lesenswert?

Indem man die Quelle deaktiviert. Allenfalls das Manual etwas genauer 
lesen...

von ge-nka (Gast)


Lesenswert?

interrupt [xxx] void yyyy (void)
{
xxxxxx;
}

void main (void)
{
initialisierung;
while (1)
{
dein Programm, dass zyklisch ausgeführt wird;
};
}

Bei so einem Konstrukt soll es eigentlich ohne Problemme gehen.

von Clemens K. (clemensk)


Lesenswert?

habs gelöst! Danke!

von Michael S. (Firma: electro-tester) (michael0307)


Lesenswert?

clemens kruse schrieb:
> habs gelöst! Danke!

Läst du uns auch an deiner Lösung teilhaben?


Grüße...

von Michael U. (amiga)


Lesenswert?

Hallo,

man muß die Quelle nicht unbedingt deaktivieren, man kann auch vor sei 
einfach das evtl. gesetzte Interruptflag der Quelle durch Schreiben 
einer 1 löschen.

Gruß aus Berlin
Michael

von Michel (Gast)


Lesenswert?

Im Datenblatt heißt das dann so:
"The flag is cleared when the interrupt routine is executed. 
Alternatively,
the flag can be cleared by writing a logical one to it."

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.