-
-
Erfahrener Benutzer
Robotik Einstein
Da der Michi, das Problem mit Stack angesprochen hat, von wegen ohne seine
Initialisierung wollte ich hier auch mal dazu sagen.
Klar geht es ohne, aber sobald man die Befehle rcall, pop und push benutzt (hat schon Florian angesprochen) gibt es Probleme.
Genauso mit Interrupts, dabei wird auf dem Stack die Rücksprung Adresse abgelegt.
Und wenn wir nicht deklarieren, wo das ende von Sram liegt, bleiben die SPL und SPH adressen leer, also 0x00.
Was passiert dann, wenn man ungewollt(z.B. ein Interrupt) irgendwas auf dem Stack ablegt?
Sram von Adresse 0x00 bis 0x60(Mega
ist für alle Register R0-R31 und alle anderen Register reserviert (sehe Dattenblatt Seite 16) damit überschreiben wir uns den Inhalt von R0 . Da der Stack aber rückwärts geht also von hinten nach vorne, wird er mit sbiw vom µC
um 1 verringert und wo landen wir wenn 0x000 -1 gerechnet wird?
Ich hoffe, daß hier auch ein Schlaumeier ist, der diese Ausführung bestätigen könnte.
Gruß Sebastian
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen