PIC Watchdog-Timer - EEPROM Problem

M

mfacen

Guest
Ich bin der Gestaltung eines Eintrags Verschluss-System basiert auf einem PIC16F84.Das System funktioniert gut, aber alle paar Monate oder so blockiert es, denke ich ist dies auf Störungen im Netz.Ich tryied zu starten mit dem Watch Dog Timer, um den Mikrocontroller zurückgesetzt, wenn es Stände, aber es setzt den Chip jederzeit es Versuche, um einen neuen Code in das EEPROM zu schreiben, auch wenn ich den Vorteiler auf das Maximum.Ich verwende das EEPROM auf die Codes zu speichern.
Jede Idee, was der Watchdog verursacht mit dem Chip-Reset?Ich habe sogar verwendet CLRWDT gleich zu Beginn des EEPROM schreiben Rutin.

 
Hallo,

wenn Sie den Vorteiler auf Timer0 zugewiesen können Sie nicht berechtigt, die Vorteiler auch für die Watchdog vielleicht ist Ihr Problem?

Ich habe die Funktion EEPROM_write beigefügt (in C programmiert) Ich verwende auf dem 16F877 vielleicht haben Sie etwas, das fehlt in ist finden Sie in Ihrem Programm??

void EEPROM_write (byte adresse, Byte-Daten)
(
EEPGD = 0;

tun
(
asm ( "clrwdt");
)
while (WR);

EEADR = adresse;
EEDATA = daten;
WREN = 1;
GIE = 0;
EECON2 = 0x55;
EECON2 = 0xAA;
WR = 1;
GIE = 1;
WREN = 0;
)

Mit besten Grüßen

 
Dank C-Man für die schnelle Reaktion!

Ich bin nicht mit TMR0 auf dem Programm.I-Programm direkt in Assembler mit MPLAB.Ich bin der Zuordnung der presacaler die wdt:

__CONFIG _xt_osc & _wdt_on & _pwrte_on & _cp_off
bcf OPTION_REG, PSAUnd dies ist das EEPROM zu schreiben Rutin:

eewrite
clrwdt
bsf STATUS, RP0
bcf EECON1, eeif
bsf EECON1, Zaunkönig
bcf INTCON, GIE

movlw h'55 "
movwf EECON2
movlw h'aa "
movwf EECON2
bsf EECON1, wr

notyet
btfss EECON1, eeif
clrwdt
goto notyet
bcf EECON1, eeif
bcf EECON1, Zaunkönig
bsf INTCON, GIE
bcf STATUS, RP0
zurückDas Programm funktioniert in allen übrigen rutines, ist nur, wenn ich einen neuen Code auf der Tastatur, dass sie setzt in Kraft.Wenn ich nicht verwenden wdt schreibt es das EEPROM ohne Probleme.

Danke für die Hilfe.

 
What about this?notyetclrwdtbtfss EECON1, eeifgoto notyetAnsonsten sind Sie in der waitloop ohne Zurücksetzen des Watchdog so schnell gefangen, da eeif gesetzt ist ...

Mit besten Grüßen

 
Ich vergaß zu diesem Beitrag:

bcf OPTION_REG, ps2, ps2 von PSA
bcf OPTION_REG, PS1, PS1 von PSA
bcf OPTION_REG, PS0; PS0 von PSA

Ich verwende die maximale Vorteiler (1:128) für die WDT, dass genügend Zeit für den Schreibvorgang in den 16F84 datasheet gibt es eine Grafik, die besagt, 5 Volt für die VDD schreiben Zeitpunkt des EEPROM ist nur mehr geben sollte 5ms, sollte die wdt alle 18ms x 128 reset = 2304 ms.Thats viel Zeit für die Schreib-Operation!Hinzugefügt nach 3 Minuten:sorry, ich gepostet cut & paste aus meinem Programm, wie es jetzt läuft (Prescaler = 1)

Ich habe schon versucht, dieses:

bsf OPTION_REG, ps2, ps2 von PSA
bsf OPTION_REG, PS1, PS1 von PSA
bsf OPTION_REG, PS0; PS0 von PSA

(Prescaler = 128)Hinzugefügt nach 2 Minuten:Ah ok, ich weiß nicht mehr, wenn ich bereits versucht, dass ich glaube, ich habe aber nicht für Shure.

Jetzt ist 2 Uhr morgens hier, und meine Frau wird killme auseinander zu nehmen, wenn ich die Sperre zu starten, werde ich versuchen, morgen und let you know.

Thanks ...

 
mfacen schrieb:

Ich vergaß zu diesem Beitrag:bcf OPTION_REG, ps2, ps2 von PSA

bcf OPTION_REG, PS1, PS1 von PSA

bcf OPTION_REG, PS0; PS0 von PSAIch verwende die maximale Vorteiler (1:128) für die WDT, dass genügend Zeit für den Schreibvorgang in den 16F84 datasheet gibt es eine Grafik, die besagt, 5 Volt für die VDD schreiben Zeitpunkt des EEPROM ist nur mehr geben sollte 5ms, sollte die wdt alle 18ms x 128 reset = 2304 ms.
Thats viel Zeit für die Schreib-Operation!
Hinzugefügt nach 3 Minuten:
sorry, ich gepostet cut & paste aus meinem Programm, wie es jetzt läuft (Prescaler = 1)Ich habe schon versucht, dieses:bsf OPTION_REG, ps2, ps2 von PSA

bsf OPTION_REG, PS1, PS1 von PSA

bsf OPTION_REG, PS0; PS0 von PSA(Prescaler = 128)
 
Ja du hast recht, ich habe geschnitten und aus dem Programm eingefügt werden, wie es funktioniert nun, mein Fehler.Da konnte ich nicht machen, es funktioniert Ich habe versucht viele verschiedene Dinge durcheinander und es auf.Ich bin nicht mehr der Aufruf zu schreiben eeprom Rutin und ich bin einfach über die Sperre mit den Codes ich programmiert, wenn ich das Programm in den PIC gebrannt.
Ich steige aus dem PIC von der Schleuse und morgen gehen Trog das Programm erneut.

Regards ...

 
OK C-Mann, der &%&&%$$% Ding funktioniert jetzt.

Das Problem war, das Sie darauf hingewiesen.
Ich kann glauben Ich verbrachte Wochen schriftlich das Programm und dann nicht so ein dummes Ding!!Nun, lernen Sie aus Ihren Fehlern richtig?

Danke für die Hilfe.

 

Welcome to EDABoard.com

Sponsor

Back
Top