Hallo Gemeinde,
ich suche gerade eine feine Art zum programmieren (AVR-GCC/ATmega2560).
Ich bin gerade am überlegen, wie ich folgendes Problem am elegantesten
löse und die "alten" Forumseinträge helfen mir nicht weiter...
Also, ggf. hat ja einer von euch Zeit mir ein paar schmankerl eurer
Künste beizubringen:-)
Ich habe derzeit meine Hardware mit mehreren IRQs am laufen. Das
Szenario ist:
IRQ A muss immer an sein --> IRQ nicht deaktivieren via cli();
IRQ B soll nur an sein, bis Event ihn auf Low zieht und erst nach
weiterer Ausführung wieder reagieren.
Also... IRQ B --> EVENT PIN-X auf LOW --> Springe in ISR für IRQ B -->
Bleibt in IRQ B, da PIN auf Low bleibt! Prob:
Der Low-Pegel erzeugt mir immer und immer wieder nen IRQ (Das darf aber
nicht sein..!) Das heißt, ich möchte, dass er nicht auf den LOW-Pegel
reagiert, wenn ich einmal drauf reagiert habe(Verständlich?) Ich möchte
ihn quasi zwischenzeitlich deaktivieren. Nun die Frage nach der
elegantesten Art ?
einfach
1 | ....
|
2 | EICRA = (0<<ISC31);
|
3 | ÉIMSK = (0<<INT3); // Ausschalten
|
4 | ....
|
5 | // Mache was und reagiere nicht auf IRQ B
|
6 | ....
|
7 | Schalte ihn wieder ein...
|
Danke für Tipps!