hallo;
kann es sein dass das MCUCR die Art der Interruptauslösung nicht nur für den INT0, sondern auch für den PC-Int steuert, wenn man beide Interrups aktiviert ?
hallo;
kann es sein dass das MCUCR die Art der Interruptauslösung nicht nur für den INT0, sondern auch für den PC-Int steuert, wenn man beide Interrups aktiviert ?
Hallo,
nein. Allerdings wenn der INT0 und PCINT2 (beide liegen ja auf dem gleichen PIN PB2) aktiv sind, kann der INT0-Low-Level-Interrupt den PCINT stören. Interrupt bei Low Level ist Default im MCUCR Register.
Wird PB2 auf Low gezogen, löst der Low Level Interrupt des INT0 aus und bleibt getriggert laut Datenblatt:
Auch das PCINT Flag wird gesetzt aber da INT0 ISR höher priorisiert ist, wird diese durch die ununterbrochene Triggerung immer wieder ausgeführt. Die PCINT ISR kommt durch ihre niedrigere Priorisierung dadurch nicht dran.Zitat von Datenblatt
Wird die Low Level Interrupt Bedingung weggenommen, kann der PCINT ausgeführt werden. Es sieht dann so aus, als wenn der PCINT auf PB2 nur bei steigender Flanke getriggert würde.
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Ich kenn jetzt den Attiny25 nicht so gut, aber von den MEGA Controller her sollte das so sein:Wird die Low Level Interrupt Bedingung weggenommen, kann der PCINT ausgeführt werden. Es sieht dann so aus, als wenn der PCINT auf PB2 nur bei steigender Flanke getriggert würde.
Bei INT0 bei High, oder LOW Pegel geb Ich Searcher recht - So lange der Zustand ansteht wird nur die ISR0 ausgeführt.
Wenn du flankengetriggerte Interrupts für INT0 verwendest würde bei passender Bedingung zuerst der INT0 angesprungen ( da höher priorisiert ) und nach Beendigung von der, die Pin Change Interrupt Routine, weil das Flag ja noch gesetzt ist.
Das Flag wird erst nach Ausführung der Pin Change Routine gelöscht ( oder durch schreiben einer 1 in das entsprechende Register ).
Lesezeichen