Forum: Compiler & IDEs Abbruch beim Funktionsaufruf


von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich versuche eine Steuerung über ATmel128-Controller zu realisieren.
Das Programmieren erfolgt in C, das Kompilieren mit avr-gcc.

Dabei tritt folgendes Problem auf:
Beim Versuch selbstdefinierte Funktionen aufzurufen bricht der
Mikrocontroller den Prozeß zum Zeitpunkt des Funktionsaufrufs ab. Dies
geschieht selbst bei leeren Funktionen. Der Programmcode ohne
Funktionsaufruf läuft problemlos (=fehlerfrei).

Kennt einer von Euch das Problem? oder besser: eine Lösung?

Das gleiche Phänomen des Abbruchs tritt auch in einem Programm auf, bei
dem ich eine Endlosschleife (mit while(1), for(;;) oder goto Start)
realisieren wolte. Das entsprechende Programm habe ich als Datei
angehängt. Im vorhandenen Zustand läuft es einwandfrei, beim Einfügen
der Schleife (auf eine der oben genannten Arten) kommt es beim Beginn
der Schleife zum Abbruch.

Ich würde mich freuen, wenn mir jemand bei der Fehlerbehebung helfen
könnte.

Vielen Dank, Matthias

von Jörg Wunsch (Gast)


Lesenswert?

FAQ gelesen?

Vermutung #1: M103C Fuse ist nicht gelöscht...

von Matthias (Gast)


Lesenswert?

Hallo Jörg,

vielen Dank für die Antwort, aber irgendwie stehe ich gerade auf dem
Schlauch. Zumindest kann ich keine entsprechende Passage in den faq
finden. Wäre für einen link oder eine Beschreibung dankbar.

MfG, Matthias

von Jörg Wunsch (Gast)


Lesenswert?

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_fuses

Wenn Du WinAVR hast, hast Du das auch auf Deiner Festplatte stehen.

von BAB ( Kai K. ) (Gast)


Lesenswert?

wie jörg schon sagte ist es sehr wahrscheinlich die mega103 fuse bit.

d.h. standard mässig beim kauf vom mega128 ist die mega103 fuse bit
gesetzt und dein mega128 läuft dann im mega103 kompatiblitäts modus. du
hast dein programm aber für einen mega128 compiliert und der stack vom
mega103 liegt an einer anderen stelle im sram als der vom m128 und
somit crashed dein controller nach dem ablauf deiner funktion weil er
die rücksprungadresse an einer anderen stelle sucht.

nimm pony prog und lösche diese fuse bit.

von BAB ( Kai K. ) (Gast)


Lesenswert?

nachtrag:
zum testen kompiliere dein programm mal für einen mega103 und schon
sollte dein programm laufen ohne probleme.
Dir stehen dann aber nicht alle funktionen vom m128 zur verfügung !!
Siehe datenblatt m128 !!

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.