tschoeatsch schrieb:
@Mitch64 und wie wird das erkannt, dass sich das Programm in der isr befindet? Wozu bräuchte es dann das reti, dass ja int-flags zurück setzt? Und warum wird dann nicht immer die isr durch andere interrupts unterbrochen? Fragen über Fragen
Der Opcode von Ret und Reti unterscheidet sich. Da gebe ich dir recht. Einen Unterschied macht das wohl.
Ansonsten kann ich dir die Frage nicht beantworten was nun stimmt.
Ich weiß, dass im Controller ein Microcode abläuft (und vielleicht ist da der Atmel auch eine Ausnahme) und der Controller weiß, dass ein Interrupt anhängig ist (PCIFn = 1), also hat er die Möglichkeit das Flag beim Einsprung zu löschen. Schließlich prüft er ja das Globale Interruptflag im Statusregister ja auch, bevor er springt.
Ich habe nur eine Vermutung aufgestellt, dass das Flag schon mein Einsprung gelöscht werden könnte.
Und die Passage aus dem Datenblatt auf Deutsch und Englisch angegeben.
Mehr weiß ich auch nicht.
Ein Test-Ccode kann Aufschluss darüber geben, ob das Flag erst beim IRET gelöscht wird oder nicht.