Forum: Mikrocontroller und Digitale Elektronik Seltsames µC Verhalten nach Unterbrechung von UB


von Thomas R (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem:
Wenn ich meinen PIC im Releasemodus programmiere und dann in MPLAB 
starte, stoppe und anschließend wieder starte verhält sich der PIC wie 
gewünscht.

Wenn ich aber die Spannungsversorgung des PICs unterbreche und 
anschließend wieder anschließe, beginnt er nicht am Anfang einer 
Switchstruktur sondern bereits bei Nr.2.

Ich habe auch schon überprüft, ob er überhaupt am Beginn des Programms 
beginnt, das tut er. Direkt vor der Switchstruktur setzte ich auch die 
Variable nochmal auf eins, aber trotzdem beginnt er bei 2.

Die Switchvariable wird durch einen Interrupt inkrementiert.

Was kann ich tun?

Danke für Eure Hilfe!


Gruß Thomas

von Magnus Müller (Gast)


Lesenswert?

Thomas R wrote:
> Wenn ich aber die Spannungsversorgung des PICs unterbreche und
> anschließend wieder anschließe, beginnt er nicht am Anfang einer
> Switchstruktur sondern bereits bei Nr.2.
>
> Ich habe auch schon überprüft, ob er überhaupt am Beginn des Programms
> beginnt, das tut er. Direkt vor der Switchstruktur setzte ich auch die
> Variable nochmal auf eins, aber trotzdem beginnt er bei 2.
>
> Die Switchvariable wird durch einen Interrupt inkrementiert.

Schön... schön...

> Was kann ich tun?

Quelltext posten?

von Thomas R (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Quelltext!
Da er insgesamt ziemlich ausführlich ist, habe ich nur den Code bis zur 
besagten Stelle.

von Magnus Müller (Gast)


Lesenswert?

Ohne jetzt den Code unter die Lupe genommen zu haben fallen mir noch was 
ein:

Wie verhält sich der Controller, wenn er im Laufenden Betrieb reseted 
wird? Zeigt er dann auch dieses Fehlverhalten, oder wird das Programm 
dann korrekt abgearbeitet?

Wenn ja: eventuell steigt die Spannungsversorgung zu langsam an, so dass 
der Controller schon mit der Abarbeitung des Programms beginnt bevor 
eine für den sicheren Betrieb ausreichende Betriebsspannung zur 
Verfügung steht. In diesem Falle wäre die Reset-Beschaltung zu 
überdenken...

Wenn nein: dann wirds allmählich interessant ;)

von morph1 (Gast)


Lesenswert?

hast du den startuptimer eingeschaltet? wenn nicht, dann mach das mal.

kann sein das deine versorgung direkt nach dem einschalten noch nicht so 
wirklich sauber is und die 72ms die er dann wartet bringen dich wohl 
auch nicht um :)

von ttl (Gast)


Lesenswert?

Wenn es der C18 Compiler ist:

Je nach verwendetem Linker-script werden nicht alle Variablen 
initialisiert.
So nen Fehler hab ich auch mal lange gesucht bis mir der Mircochip 
Supporter das script angepasst hat.

von Thomas R (Gast)


Lesenswert?

Guten Morgen,

schon mal danke für Eure Tipps!
Also: Den Powerup Timer habe ich verwendet, leider ohne Erfolg. Wenn ich 
den Controller resete, funktioniert auch alles wie gewünscht!


@ttl: weißt Du in welcher Form das Linker Script angepasst wurde? Was 
war das für ein PIC? Ich verwende den 18F452.

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.