Forum: Compiler & IDEs Unerklärliche Startverzögerung ATmega128


von Stefan V. (zeh)


Lesenswert?

Hallo,

ich hab ein merkwürdiges Phänomen: beim Einschalten der Schaltung 
braucht die firmware eine längere Zeit (nicht gestoppt: Wartezeit ca. 2 
Minuten) bis der Controller anläuft bzw. der Programmablauf beginnt.

Dann geht alles ganz normal, fehlerfrei.

Das ist mir jetzt schon ein paar mal in unterschiedlichen Schaltungen 
"passiert".

Und zwar nach dem Compilieren mit 
Codeänderungen/Ergänzungen/Erweiterungen.

Wobei der entsp. Code keine Fehler hatte und auch nichts mit der 
Initialisierung bei firmwarestart zu tun hat.


Wenn ich jetzt weiteren Code dazupacke, geht wieder alles normal so wie 
es sein soll.


Meine Vermutung ist eher ein Compiler- oder Linkerfehler - ich nutze 
aktuell gcc version 4.3.4 (Debian 4.3.4-5) - wobei ich das in meinem 
Programmiererleben schon immer wieder mal erlebt habe, mit 
unterschiedlichen gcc-Versionen.


Zur Info: Device: atmega128, Program: 83088 bytes (63.4% Full) (.text + 
.data + .bootloader), Data: 2521 bytes (61.5% Full) (.data + .bss + 
.noinit), EEPROM: 3355 bytes (81.9% Full)(.eeprom)
Der uC hängt an einem Quarzoszi, die Fuses stimmen und wurde im Zeitraum 
der Entwicklung nie verändert, ein Neusetzen der Fuses bewirkt keine 
Änderung. Ein Bootloader ist nicht installiert und auch nicht aktiviert.

Ich weiß, meine Beschreibung ist abstrakt und eher etwas für 
Glaskugelkommentare - aber das hilft leider nichts. Meine Codegröße sind 
über 10k Sources, die kann und werde ich nicht posten.

Ich suche jetzt weniger den Fehler im meinem Code, den ich natürlich 
nicht ausschließe, aber für unwahrscheinlich halte

sondern eher Kommentare wie,

"ja dieses Phänomen kenn ich" - "es könnte das und das sein" - "kenn 
ich, das xxx ist die Ursache".


Meine Meinung: Wer so ein Phänomen noch nicht erlebt hat, kann auch nur 
rumrätseln. Hab ich schon zur genüge. Die einzige Ursache, die ich eben 
"herausgefunden" habe ist: eine Mengen-mäßige Verringerung des Codes 
oder eben eine Erweiterung, lassen dieses Fehlverhalten wieder 
verschwinden.
Eine Fehlerursache in unterschiedlichen Codes habe ich bisher nicht 
gefunden.

Sowas wie Stack- oder puffer-Overflow halte ich auch für sehr 
unwahrscheinlich. Die Veränderungen von Codemenge (ohne die globalen 
Variablen zu ändern) ändern eben diese Mysterium.

von Reset (Gast)


Lesenswert?

Wie ist denn der Reset Eingang beschaltet?

von Stefan V. (zeh)


Lesenswert?

hmmm .. Pullup 100k gegen VCC und 100nF gegen Masse.

von Guest (Gast)


Lesenswert?

Passen die Anschwing-Cs zum Quarz?

von Stefan V. (zeh)


Lesenswert?

> Passen die Anschwing-Cs zum Quarz?
s.o. wird kein Quarz benutzt, sondern ein Quarzoszi 
(http://de.wikipedia.org/wiki/Quarzoszillator), Takt immer vorhanden!

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.