Hi, mal wieder eine Frage: muss der erste Befehl in einer ISR die Abschaltung des entsprechenden Interrupts sein, oder genügt es, das auslösende Interruptflag zu löschen? ...oder empiehlt sich ggf. sogar, beides auszuführen? Ich bin mir nicht sicher, da in einigen Datenblättern steht, dass das Interruptflag bei Bearbeitung der entsprechenden ISR automatisch gelöscht würde, dort allerdings nicht klar hervorgeht, ob dies bereits am Anfang, oder erst am Ende der ISR geschieht... DANKE!
du solltest erst mal den Controller nennen um den's geht. Bei AVR's brauchst du nichts derartiges zu tun. Mit Auslösen des INT werden weitere INT's gesperrt, bis am Ende der ISR mit den Befehl RETI der ursprüngliche Interruptzustand wiederhergestellt wird. Sascha
Man kann auch mal logisch überlegen. An welcher Stelle 'weiß' die CPU am einfachsten, um welchen Interrupt es sich handelt? An der Stelle an der sie in die ISR verzweigt oder an der Stelle an der sie mit einem RETI wieder aus der ISR rauskommt? Wo hat man daher weniger Arbeit, das entsprechende Flag zurückzusetzen und wie will man eigentlich den Fall handhaben, wenn während einer ISR dieselbe Interruptbedingung schon wieder eintritt?
Karl Heinz Buchegger schrieb: > Man kann auch mal logisch überlegen. Ja, kann man. Aber besser ist es allemal, die Doku gründlich zu lesen. Manche Interrupts bei manchen uC sind statisch, werden also sofort wieder ausgelöst, wenn die Ursache nicht in der ISR beseitigt wird und andere sind flankengesteuert und werden nur einmal ausgelöst, nämlich mit der Flanke, mit der die Bedingung wahr wird. Dazu kommt noch ein generell unterschiedliches Verhalten der diversen uC bei Interrupts. Manche werden per Spezialbefehl beendet (RETI und so), andere nicht... Also: Buch lesen, das hilft am ehesten. W.S.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.