... schrieb:
> Das hat nichts mit dem AVR zu tun sondern mit der avr-libc.
Mit dem AVR hat das schon was zu tun, der hat nämlich keine
Interruptprioritäten.
Bei einem MC mit Prioritäten (z.B. 8051) kann ein Interrupt durch einen
mit höherer Priorität unterbrochen werden. Er kann sich sogar selbst
unterbrechen, wenn man im Handler die Priorität hochsetzt. Die Anzahl
der Instanzen ist aber durch die Anzahl der Prioritätsstufen begrenzt,
also kann es keinen Stacküberlauf geben.
Im Gegensatz dazu kann beim AVR das
1 | ISR(PCINT3_vect, ISR_NOBLOCK) {} // interrupts enabled
|
zu einem Stacküberlauf führen und ist daher mit äußerster Vorsicht zu
verwenden.
Peter