Seltsames µC Verhalten nach Unterbrechung von UB

Gast #1232989
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
Gast
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?
Gast
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 ;)
Gast
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 :)
Gast
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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.