Gast
#5208955
Hallo, eben habe ich wie im Artikel https://www.mikrocontroller.net/articles/AVR-Tutorial:_Stack vorgeschlagen, die Funktion des Stacks im Simulator beobachtet. Hierzu habe ich das Beispiel-Programm für den ATmega8 im Simulator des Atmel Studio 7 laufen lassen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
Alles funktioniert wunderbar: Bei rcall sub1 steht der PC auf 04. Nach rcall sub1 erscheint im Memory Fenster auf dem Stack die Rücksprungadresse 00 05. Wenn man das Beispiel-Programm aber für den ATmega16 simuliert (Device im Projekt und .include geändert), ist das Verhalten nicht nachvollziehbar. Obwohl an gleicher Stelle der PC auf 04 steht, erscheint nach Abarbeitung von rcall sub1 auf dem Stack 20 05 (s. Screenshot). Woher kommt die 20? Habe ich hier etwas nicht verstanden? Bediene ich den Simulator falsch? Es würde mich freuen, wenn mir jemand weiterhelfen könnte. Weiter Beobachtungen: Mit Device ATmega128 schreibt der Simulator wie erwartet 00 05 auf den Stack. Selbiges gilt für den ATmega16, wenn man die Simulation im AVRStudio 4 verwendet. Vielen Dank für Eure Unterstützung

