Problem mit AVR Studio 6 - ATMega64 funktioniert nicht mehr (speziell Aufruf von Unterfunktionen)

Gast #2983419
Lesenswert?

Hallo zusammen,

bin umgestiegen von AVR-Studio 4.12 auf 6.0.1843. Ich wollte ein altes 
Projekt, das bereits tatellos funktioniert hat, auf dem neuen Studio zum 
laufen bringen. Dazu habe ich ein neues Projekt erstellt (GCC C 
Executable Project) und dann den Inhalt der alten .c Datei in die neue 
.c Datei kopiert. Das Kompaillieren und Beschreiben des µC verlief 
fehler- und warnfrei.

Das Problem: Der µC bleibt plötzlich stehen und macht nichts mehr.

Folgendes habe ich bei der Fehlersuche entdeckt:
Sobald ich innerhalb von main() eine Funktion aufrufe, bleibt der µC am 
Ende der Funktion hängen und kommt nicht mehr heraus, so als würde er im 
Stack den Pointer für die Rücksprungadresse verlieren. Im konkreten Fall 
war das eine global deklarierte und definierte Funktion, die irgendwo 
innerhalb von main aufgerufen wird. Wie gesagt, beim AVR Studio 4.12 
lief dieser Quellcode tatellos, ich verwende genau die gleiche Hardware.

Die folgenden Punkte habe ich bereits gecheckt:
- µC Typ
- fuses
- clk Frequenz
- compiler-optimierung auf "-os"
- keine Fehler- oder Warnmeldungen beim kompilieren
- richtiges .hex file

Ich weiß im Moment nicht mehr weiter. Kann mir jemand bitte helfen?
Danke im Voraus.

Gruß Matthias
#2983437
Lesenswert?

Hi,

wieviel vom Arbeitsspeicher (SRAM) hast Du verwendet?

Solche Effekte hatte ich, als mein Stack mit dem Heap (d.h. dem 
Variablenspeicher vom C-Programm) kollidiert ist aufgrund von zuwenig 
SRAM.

Da Du jetzt ja eine neuere Version der Toolchain und wohl auch der libc 
verwendest, könnten da durchaus Unterschiede im Speicherverbrauch 
auftreten.

Grüße
Markus
#2983443
Lesenswert?

Matthias schrieb:
> Folgendes habe ich bei der Fehlersuche entdeckt:
> Sobald ich innerhalb von main() eine Funktion aufrufe, bleibt der µC am
> Ende der Funktion hängen und kommt nicht mehr heraus, so als würde er im
> Stack den Pointer für die Rücksprungadresse verlieren.

> Die folgenden Punkte habe ich bereits gecheckt:
> ...
> - fuses

Sicher? Klingt verdammt nach M103C-Fuse.
Gast #2983656
Lesenswert?

Hallo Stefan,

Du hattest absolut recht. Genau diese Fuse war aktiv. Nachdem ich die 
"CompMode" Fuse deaktivert habe, geht es jetzt. Super!!! Vielen Dank!
Gestern ist meine Konzentration halt einfach schon um 22 Uhr mit den 
Kindern ins Bett gegangen :-)

Danke auch an Markus für den interesanten Lösungsansatz!

Schöne Grüße,
Matthias

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren