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?
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.
@ 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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.