Okay - das erklärt natürlich so einiges! Da muss man aber erstmal drauf kommen :-)
Dann werde ich das Kapitel "TOVF1" ganz genüsslich zu den Akten legen und die entsprechende ISR einfach mit Gosub ausführen lassen.
Danke für die Info!!
Druckbare Version
Okay - das erklärt natürlich so einiges! Da muss man aber erstmal drauf kommen :-)
Dann werde ich das Kapitel "TOVF1" ganz genüsslich zu den Akten legen und die entsprechende ISR einfach mit Gosub ausführen lassen.
Danke für die Info!!
Wenn man die ISR einfach per Gosub aufruft, muß man eventuell aufpassen, denn dann kann der Aufruf per Gosub auch noch per Interrupt unterbrochen werden. Nicht jeder Code verträgt es wenn er quasi 2 mal läuft. Ein Beispiel für Mögliche Probleme wäre der zugriff auf 16 Bit Variablen oder Register.
also eventuell als allererstes beim betreten der ISR-Sub das interrupt enable flag löschen und anschliessend wieder setzen
Sehr guter Tip mit dem Globalen Enable Interrupts - hab es gerade ausprobiert und (bislang) läuft´s wie geschmiert!
Das Interrupt flag in der ISR zu löschen ist eine gute Idee: beim Aufruf als interrupt passiert nichts, beim Aufruf per Gosub weren interrupts gespeert. Auf das explizite setzen des Interrupt flags sollte man aber besser verzichten, denn sonst kann man 2 geschaltelte ISRs kriegen und braicht 2 mal den Stack für die ganzen Register. Am ender der ISR sollter der Interrupt ohnehin wie der frei gegeben werden (durch dem ASM befehl RETI am den Ende).