Forum: Mikrocontroller und Digitale Elektronik einschaltprobleme beim pic 16f84


von malte (Gast)


Lesenswert?

Hallo!
Ich habe folgendes Problem. Meine Schaltung läuft eigentlich ohne 
Probleme, allerdings funktioniert der Einschaltvorgang nicht so richtig. 
Beim Einschalten der Betriebsspannung läuft der Pic eigentlich nie an. 
Ich muss erst einmal schnell wieder aus und dann ein schalten. (warum 
auch immer?!?)
Ausserdem kann ich den Pic zum laufen bringen, wenn ich "reset" 
betätige. (Ich will aber einfach einschalten, dann soll das Gerät 
funktionieren)
Zuerst dachte ich, der Quarz schwingt sich nicht richtig ein, da die 
Kondensatoren falsch gewählt worden sind, ich habe aber jetzt diverse 
Werte von 18pF bis 33pF gewählt, mit dem selben Ergebnis.
Dann habe ich über einen Kondensator den Reset-Pin beim Einschaltvorgang 
längere Zeit auf low gehalten, funktioniert aber auch nicht.
Ausserdem habe ich noch mit verschiednen Kondensatoren ausprobiert, die 
Spannungschwankungen beim Einschaltvorgang zu unterdrücken, mit dem 
Ergebnis dass ich das Gerät wieder ohne Probleme einschalten kann, wenn 
die Elkos noch geladen sind. Im entladenen Zustand tritt wieder das 
selbe Problem auf.

Wer weiß, was ich falsch gemacht haben könnte?

von Pfistu (Gast)


Lesenswert?

Es liegt an der Software die du programmiert hast. Wenn du die Spannung 
einschaltest, dann wird sofort ein Interrupt ausgelöst, dort sollte eine 
Sprungmarke an den Anfang deines Programms stehen, damit es anläuft. 
Schau im Tutorial dieser Page mal nach, ist sicher beschriben bei den 
Interrupts.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

@ Pfistu: Im Tutorial geht es nur um AVR, nicht um den PIC. Außerdem 
liegt der Reset-Vektor meistens ganz am Anfang des Programmspeichers, so 
dass das Programm einfach laufen sollte. Und das tut es ja auch, wenn 
Reset betätigt wird.

@ malte: Wie sieht deine Spannungsversorgung und die Reset-Beschaltung 
aus?

von Florian S. (Gast)


Lesenswert?

Der PIC16F84 verfügt über eine POR(Power-On-Reset)-Schaltung, das den 
Controller beim anlegen der Betriebsspannung zurücksetzen.
Zu dem schalte ich immer einen 22kOhm Widerstand von +Ub nach /MCLR und 
einen 2,2µF Elko von /MCLR nach Masse.
Ich hatte bis jetzt noch keine dieser Probleme werder mit noch ohne 
externer Beschaltung an /MCLR.

Beachte auch noch folgende Adressen:(Hex)
000  Reset-Vektor
004  Interrupt-Vektor
100  Hier fängt normal das Hauptprogramm an.


Das Programm sieht also folgendermaßen aus:
        org     000
        goto    haupt

        org     004
isr     ....
        retfie

        org     100
haupt   ....

Gruß Flo

von malte (Gast)


Lesenswert?

Vielen Dank für die zügige Hilfe.
Mein Problem war in der Tat ein Software-Problem. Beim Einschalten wurde 
ein Timer-Interrupt ausgeführt, bevor ich eine Kontrollvariable erst 
gesetzt habe. Dadurch dachte das Programm, es sei schon zu ende. Jetzt 
habe ich die Aktivierung der Interrups ein wenig später gesetzt und 
alles funktioniert!!!
Nochmals vielen Dank und viele Grüße
Malte

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.