Hallo Forengemeinde, ich hab nen Problem was ich nicht so ganz verstehe. Als erste Funktion/Commando in meiner main() habe ich eine Funktion die mir die Ports des AVR's initialisiert. Der Programm Counter hat dort aber bereits den Wert 0x000612. Wie kann das sein?
Tim Flechsel schrieb: > Hallo Forengemeinde, > > ich hab nen Problem was ich nicht so ganz verstehe. Als erste > Funktion/Commando in meiner main() habe ich eine Funktion die mir die > Ports des AVR's initialisiert. Der Programm Counter hat dort aber > bereits den Wert 0x000612. Wie kann das sein? ehe dein main() loslegt, sind schon ein paar ganz andere Sachen passiert. da wurden zb die globalen Variablen initialisiert, die Speicherverwaltung in Gang gebracht etc. Auch das ist Code, der irgendwo stehen muss. Ausserdem sagt ja kein Mensch, dass main() als erstes im Speicher stehen muss. Wo main() steht ist ja letztendlich egal, der wichtige Punkt ist, dass es die erste Funktion ist, die angesprungen wird, nachdem die Runtime das komplette C-Laufzeitsystem initialisiert hat. Und an 0x0000 kann main() sowieso nicht stehen, weil dort beim AVR die Interrupt-Vektoren liegen.
Das hängt wohl ganz vom unbekannten und vollständigen Programm ab ...
Angesprungen wird die Funktion als erstes. Problem ist aber das aus irgendeinem Grund das Programm wieder von Anfang an startet, ohne das irgendein Rücksprungbefehl, Watchdog oder dergleichen aktiv ist.
Tim Flechsel schrieb: > Angesprungen wird die Funktion als erstes. Problem ist aber das aus > irgendeinem Grund das Programm wieder von Anfang an startet, ohne das > irgendein Rücksprungbefehl, Watchdog oder dergleichen aktiv ist. Was hat das jetzt mit dem ersten Thema und der Überschrift zu tun? Das Programm ist immer noch unbekannt.
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.