Forum: PC Hard- und Software Problem mit AVR Studio 6 - ATMega64 funktioniert nicht mehr (speziell Aufruf von Unterfunktionen)


von Matthias (Gast)


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

: Verschoben durch Moderator
von Markus M. (adrock)


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

von Stefan E. (sternst)


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.

von Matthias (Gast)


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

von Ingo (Gast)


Lesenswert?

Darf ich mal fragen was dich dazu bewogen hat von 4.12 auf 6 
umzusteigen? Warum hast du die anderen Updates ausgelassen?


Ingo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ingo schrieb:
> Warum hast du die anderen Updates ausgelassen?

Wofür sollten sie denn gut sein?

Nein, ich benutze kein AVR Studio, aber dazwischen lag nur das AVR
Studio 5, welches erstens völlig buggy war (habe ich gelesen) und
zweitens innerhalb kürzester Zeit durch Atmel Studio 6 abgelöst
worden ist.

von Ingo (Gast)


Lesenswert?

Es gab aber doch in Version 4 noch weitere Updates (ich nehme an von 
4.12 bis 4.19 etwa 7 + evtl. Servicepacks)!?

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
Noch kein Account? Hier anmelden.