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
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?
Hier der Quelltext! Da er insgesamt ziemlich ausführlich ist, habe ich nur den Code bis zur besagten Stelle.
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 ;)
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 :)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.