Forum: Mikrocontroller und Digitale Elektronik Reset und Watchdog bei 16F84A


von Tobias (Gast)


Lesenswert?

Hallo zusammen!

Wie der Tietel schon sagt: Ich habe einen PIC (16F84A) komme mit dem
Watchdog und dem Reset nicht klar.

Ich programmiere mit MPLAB und PICSTART PLUS.

Also muß ich meine Controller nach dem Programmieren aus der
Programmierbox nehmen und in die Schaltung einsetzen.

Nun laufen die Programme aber nicht richtig an.

Daher hier meine Frage:
Wie muß ich die Einstellungen bei PICSTART beim Programmieren machen?
Hierbei denke ich insbesondere an den Power on Reset Timer (oder so
ähnlich) und den Watchdog.

Als kleine Erläuterung: ich beutze den Watchdog nicht. Da ich aber auch
keine Ahnung habe, wie man den im OPTION Register ausstellt (bzw. ob man
das überhaupt muß) und ich, wenn meine Anleitungen und das was ich mir
daraus überlegt habe stimmen, das Register auch sonst gar nicht
benötige hab ich auch keine Zugriffe (weder lesend noch schreibend) auf
dieses Register im Quellcode. Watchdog stelle ich aber über das
Kontrollkästchen im PICSTART Programmiermenü aus.

Wenn dieser Prozessor nicht in der Lage ist einen Reset durch
herstellen der Spannungsversorgung herbeizuführen, so wäre ich sehr
dankbar über eine ausführliche Beschreibung, wie ich den Reset dann
herbeiführen kann (mein Betreuer sagte zwar, das das immer mit Power on
Reset fuktioniert hat, aber da seine Errinerungen daran schon mehrere
jahre alt sind und er danach nie wieder mit PICs zu tun hatte, glaube
ich ihm das im Zweifel nicht......)

Das Programm was ich geschrieben habe macht folgendes (also laut
Simulation mit MPLAb macht es auch genau das, was es soll)

TRISA auf 00000110
TRISB auf 00000000
jetzt kommt eine endlosschleife, die per btfsc verlassen wird, wenn A1
auf 1 liegt (dieser Zustand läßt sich über einen Taster herbeiführen,
der A1 auf +5V legt)
B1 auf 1 (damit anschalten einer LED, die zw. B1 und Masse liegt)
TRISA auf 00000010
PORTA,2 auf 1 (A2 ist mit dem Ausgang der Schaltung verbunden)
warten (200 Takte)
PORTA,2 auf 0
200 Takte warten
TRISA auf 00000110
Endlosschleife, die verlassen (per btfss) wird, wenn A2 auf 1 ####
PORTB,2 auf 1 (2.LED an)
200 Takte warten
Endlosschleife, bis Schalter gedrückt (also bis A1 auf 1)
PORTB auf 00000000
Rücksprung zum Anfang

Die Änderung von A2 durch das obere Programm soll von einem 2. PIC
empfangen werden (über eine Schleife, wie die, mit der ich hier den
Schalter abfrage) woraufhin der Empfänger 255 Takte warten soll und
dann seinerseits seinen A2 auf Ausgang umschalten und auf 1 setzen
soll, was im oberen Programm dann die mit ### markierte Schleife
beenden soll.

Also: wenn jemandem ein Fehler in dem Programm (ja, es ist nur
Pseodocode, aber sonst wäre mir das grad zu umständlich wieder zur UNI
zu fahren und den Code abzuschreiben und hier reinzuposten) auffällt
bitte bescheid sagen.

Ansonsten bitte ich um Rückmeldung über die Ausführung des Reset und
die deaktivierung des Watchdog, damit der mein Prog nicht immer
zurücksetzt, bevor ich den Schalter drücken kann und was passiert.....

Danke schonmal!

von Michael B (Gast)


Lesenswert?

WDT -> In MPLab unter Configuration-Bits.
Reset geht mit Hitech-Compiler mit Reset():

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.