Mystisches Programm!??

Gast #89241
Lesenswert?

Hi Leute!

So langsam bin ich am Verzweifeln!
Das Programm macht einfach was es will - wie ist es denn möglich, dass
die main-Funktion mehrmals aufgerufen wird -> das gibts doch garnet,
oder!?

-> es sollten doch die ganzen Funktionen (in der main) einmal
initialisiert werden, aber komischerweise wird bei mir die Funktion
"MobilPhoneInit" ab und zu bei einem ExtInt.0 aufgerufen - des ist
doch normalerweise garnet möglich, oder - woran kann das denn liegen?

Wäre sehr dankbar wenn mir jemand weiterhelfen könnte!

gruß,
semo
Angehängte Dateien:
Gast #89242
Lesenswert?

Schau dir mal das Assemblerlisting für

for (;;) {}

an, ob das überhaupt noch da ist, es kann sein, dass das der Compiler
wegoptimiert, dann halt ein

  asm volatile (" nop");

in die Schleife schreiben.

Also möglich dass das Programm aus dem main() rausläuft, den Rest des
Speichers abarbeitet und wieder von vorne anfängt.
Gast #89243
Lesenswert?

Wenn ein Reset ausgelöst wird, dann fängt das Programm natürlich auch
wieder von vorne an.

Gründe für einen ungewollten Reset sind u.a.:
- Stacküberlauf
- Watchdog
- Zu geringe Spannung, auch wenn es nur kurzfristig ist (z.B. weil ein
Relais eingeschalten wird). Die Brownout-Detection "verschärft" das
Problem noch

Markus
Gast #89245
Lesenswert?

@Markus:

An den Watchdog hab ich als erstes gedacht, aber im Programm wird er
nicht eingeschaltet.

@semo

Watchdog sollte man immer einschalten, man weiss ja nie.
Meiner hat zwar noch nie ausgelöst, aber ich kann halt besser
programmieren als MOSFET-Treiberschaltungen entwerfen :-)

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