Hallo, wenn ein Interrupt ausgelöst wird, werden alle Register, der Programm Counter usw. auf dem Stack gesichert, und in die ISR gesprungen. Wie genau sieht denn der Interrupt Stack Frame aus. Was genau und in welcher Reihenfolge wird gesichert? Leider habe ich nichts in den Manuals gefunden. Danke für Hilfe, und bis nächtes mal, Tim.
das einzige, was automatisch gesichert wird, ist der PC, alles andere musst du selbst programmieren, selbst das SREG muss selbst gesichert werden, beliebter Anfängerfehler, dies nicht zu tun. Das kann man auf verschiedene Weisen tun, das übliche Verfahren ist, die Dingerchen auf den Hardwarestack zu pushen.
...Hardwarestack ? Ist das der, der von crt0 angelegt wird, und Defaultmässig 0x100 gross ist und im Data-Bereich liegt?
SRAM beginnt beim Mega128 bei 0x100 und geht intern bis 0x40FF Typischerweise wird der Stackpointer Register SPL & SPH mit RAMEND (0x40FF) initialisiert. Eine Default-Größe gibt's bei den AVR-Mega nicht, sondern ist nur durch das zur Verfügung stehende SRAM begrenzt.
Hardwarestack ist kein spezieller Speicherbereich, sondern Teil des normalen RAMS. Zugriffe werden i.d.R. ausschließlich über den SP getätigt, und er heist so, weil bei bestimmten Sachen (call, ISR) von der Hardware des Prozessors Daten gespeichert bzw gelesen werden und auch der Zeiger auf den letzten Eintrag automatisch bedient wird. Man kann sich andere Stackbereiche selbst definieren, die dann von den Indexregistern (X,Y,Z) adressiert werden, werden dann i.a. als Datenstack bezeichnet. Dort ist dann allerdings der Programmierer gefragt, das der Zeiger korrekt steht.
Danke für die Infos !!! Wenn alles so einfach ginge... Gruß, Tim.
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.