Hallo, ist es unmöglich, ein Flag (z. B. INTF0) im GIFR zu setzen? Ich meine natürlich nicht etwa durch eine steigende Flanke am INT0-Pin, sondern per Software, also aus dem laufenden Programm heraus. Löschen kann man diese Flags bekanntlich ja durch Einschreiben einer 1 (nicht 0!). Nun möchte ich aber so ein Flag setzen, und habe dafür keinen Weg gefunden (mit 1 einschreiben gehts ja nicht - aber wie dann?). Diverse Tests mit dem AVRStudio4-Simulator schlugen alle fehl, und im Datenblatt steht nix dazu. Jemand einen Tipp? Wäre klasse.
Ich verstehe nicht, wofür du das überhaupt machen willst. Ich habe jetzt nicht nachgeprüft, ob es tatsächlich nicht geht. Aber wenn ich möchte, dass eine Interruptroutine auf Softwarekommando ausgeführt wird, setze ich nicht das Interruptflag, sondern springe einfach direkt die Routine an. Oder In C eben einfach die Interruptfunktion aufrufen. Vielleicht löst das ja dein Problem. Viele Grüße, Peter
Setzen von INT-Flags ist in der Tat von der Hardwareseite nicht vorgesehen, nur das Löschen durch zurückschreiben einer "1" auf dem betreffenden Bit.
@Peter: Ja, wenn man die ISR sofort ausführen will, kann man das natürlich durch simples Aufrufen derselben erreichen. Meine soll jedoch erst zu einem späteren Zeitpunkt ausgeführt werden, weil vorher unbedingt noch etwas geupdated werden muss. Deshalb wollte ich den Interrupt über sein Hardware-Flag (INTF0 im Register GIFR) vormerken. Wie ich mittlerweile gecheckt habe, kann ich das Gewünschte aber auch durch ein gewöhnliches Software-Flag erwirken. @mmerten: OK, damit wäre meine Frage geklärt. Danke euch beiden und ein schönes WE!
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.