Gast
#74837
Hallo, nach langem ausprobieren und simulieren bin ich nun dahintergestiegen, dass der Stackpointer nicht richtig initialisiert wird. (WinAVR mit ATmega8) Zum Problem: Bisher konnte ich keine Funktionen in C verwenden, sie simulation klappte ohne Probleme, nur der Mikocontroller wollte nicht. Nun ich bin dahinter gestiegen, dass WinAVR den SP (Stackpointer) zwar initialisert, aber vollkommen falsch: LDI R28,0x00 LDI R29,0x00 OUT 0x3E,R29 OUT 0x3D,R28 Also auf Adresse 0x00. Resultat war, dass meine Programme nicht mehr vom unterprogramm/funktion wieder zurückspringen konnten. Nun, ich hab das Problem jetzt gelöst, in dem ich den SP von Hand initialisiere: .... void main() { SP=RAMEND; .... daraus wird dann ca. sowas: LDI R28,0x00 LDI R29,0x00 OUT 0x3E,R29 OUT 0x3D,R28 ' Erstmal falsch initialisieren LDI R24,0x5F LDI R25,0x04 OUT 0x3E,R25 OUT 0x3D,R24 ' Dann richtig von Hand Zu meiner Frage: Ist das bei euch auch so?? und wieso wird der SP erst falsch initialisiert? Danke für Tipps