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?
Indem man die Quelle deaktiviert. Allenfalls das Manual etwas genauer lesen...
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.