"Beim gleichzeitigen auftreten von 2 Interrupts,
wird zuerst der ausgeführt, welcher die niedere Nummer hat."
Theoretisch ja, praktisch kommt es dann aber zu einer
Prioritätsinversion:
Wenn 2 Interrupts als INTERRUPT deklariert sind, d.h. beim Eintritt das
SEI ausführen, dann wird der zuerst gestartete höherpriorisierte sofort
durch den 2. unterbrochen und dieser 2. niederpriorisierte zuerst
beendet.
Man muß also genau wissen, was man tut, wenn man Interrupts
verschachteln will.
Deshalb benutzte ich den AVR auch nur für kleinere Projekte.
Für komplexere Aufgaben mit vielen Interrupts benutze ich den 8051
(z.B. T89C51CC01), der hat 4 echte Interruptprioritäten, da kann man
sogar noch eine für Softwareinterrupts reservieren.
Z.B. relaisiere ich das 1-wire als Softwareinterrupt, da das Timing
nicht von anderen Interrupts unterbrochen werden darf, außer von
Interrupts der allerhöchsten Priorität.
Man muß sich dann auch nicht mehr so sehr drum kümmern, welche Sachen
wirklich im Interrupt gemacht werden müssen und welche man in die
Mainloop auslagern muß, um sämtliche Interrupts kurz zu halten.
Peter