Hallo Forum, ich habe eine Frage zur Startadresse der Interrupt Routinen. Laut Datenblatt des PIC18F4550 zeigt der High-Priority Interupt Vector auf 0x08, der Low-Priority Interupt Vector auf 0x18. Laut Linkerfile reicht der Interupt Speicher von 0x00 bis 0x29. Alles in allem sind da nur ein paar Byte Speicher. In meinem Programm habe ich nur einen Interrupt, der allerdings recht groß ist. Ich habe deswegen im Linkerfile den Speicher für Interupts vergößert. Dabei kamen mir folgende Fragen auf: Wird der Speicher für den Low-Priority Interupt dabei nicht vom Code des High-Level Interupts überschrieben? Was passiert, wenn nun ein Low-Level Interupt ausgelöst wird? Der müsste dann doch mitten im High-Level Interupt beginnen? Wenn ich den Speicher für Interupts vergößere, verschiebe ich dann auch gleich den Low-Priority Interupt Vector oder muss ich das noch irgendwo selbst machen? Eigentlich müsste man dann doch immer nur Funktionsaufrufe in den Interupt reinschreiben, die dann irgendwo anders hinspringen. So wenig Platz reicht ja niemals. In Assembler Programmierung ist das ja üblich, in C hab ich das noch nicht gesehen. Vielen Dank für die Hilfe.
An der Adresse 0x08 resp. 0x18 schreibst Du einen goto mit Deiner Interrupt-Routine als Sprungziel. Schau Dir mal die Beispiele an, die mit dem Compiler (mit welchem arbeitest Du denn?) geliefert werden.
So hab ichs gemacht. Im "MPLAB C18 C Compiler User's Guide" hab ich ein nettes Beispiel gefunden. Danke für den Tipp.
Bitte, und danke für die Rückmeldung.
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.