Hallo, wer kann mir denn mal auf die Sprünge helfen: ich habe ein Projekt erfolgreich mit GCC und einem ATmega162 abgeschlossen. jetzt möchte ich auf ATmega64 umsteigen. Dazu ändere ich doch lediglich den Compiler/linkeraufruf auf die neue CPU um, oder??? vorher (ATmega162): avr-gcc -g -Wall -O2 -mmcu=atmega162 -c -o ..\O\main.o main.c avr-cc ..\O\main.o -Wl,-Map=..\M\reader.map, -o ..\M\reader.elf --cref -mmcu=atmega162 avr-objcopy --debugging -O coff-avr --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000 ..\M\reader.elf reader.cof Nachher (ATmega64): avr-gcc -g -Wall -O2 -mmcu=atmega64 -c -o ..\O\main.o main.c avr-cc ..\O\main.o -Wl,-Map=..\M\reader.map, -o ..\M\reader.elf --cref -mmcu=atmega64 avr-objcopy --debugging -O coff-avr --change-section-address .data-0x800000 --change-section-address .bss-0x800000 --change-section-address .noinit-0x800000 --change-section-address .eeprom-0x810000 ..\M\reader.elf reader.cof Der Effekt ist jetzt der, dass alles fehlerfrei übersetzt wird, alles schön ins studio geladen wird, ich auch schön überall durchsteppen kann. ABER::: die CPU kommt nicht mehr aus Unterprogrammen zurück, der Ret-Befehl springt stets nach 0x0000 WAS KANN DAS SEIN??? muss ich bei der Konvertierung nach COFF noch was ändern? Gruß Martin
Nachtrag: in der Spec lese ich, dass der ATmega64 zwei Memory Configurations "A" und "B" kann. in "A" geht der interne SRam von 0x0100..0x10FF in "B" geht der interne SRam von 0x0060..0x0FFF laut Studio wird mein SP in der Startup-Routine auf 10FF initialisiert und wandert mit jedem UP-Aufruf herunter auf 10FD, 10FB, 10F9 etc. Das heiss dass der Compiler von der "B"-Konfiguration ausgeht. wenn ich aber im Studio von Hand die SRAM-Zellen ändern möchte, so gelingt mir das nur im Bereich bis 0FFF, nicht aber im Bereich 1000...10FF, d.h. das riecht wiederum nach Configuration "A". was mache ich falsch?
so nun hab ichs sogar selber gefunden: aus irgendeinem Grunde war die Fuse "ATmega 103 Compatibility mode" gesetzt. Fuse gelöscht - Speicher geht bis 10FF SW läuft - Compiler ist rehabilitiert - hätte ich auch nicht anders erwartet! Vielen dank
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.