PIC Watchdog Timer - EEPROM problem

M

mfacen

Guest
Jag utforma ett system in lås bygger på en PIC16F84. Systemet fungerar bra men en gång varannan månad eller så det block, tror jag beror på att störningar i elnätet. Jag tryied att börja använda timer Watch Dog att återställa mikrokontroller om den stannar, men det återställer chipet varje gång det tryies att skriva en ny kod i EEPROM, även om jag använder fördividerandekretsen maximalt. Jag använder EEPROM för att lagra koderna. Någon aning om vad som orsakar Watchdog för att återställa chipet? Jag använde även CLRWDT höger vid början av eeprom skriva rutine.
 
Hej, om du har tilldelat PRESCALER till timer0 kan du inte tilldela fördividerandekretsen också till vakthund kanske detta är ditt problem? Jag har bifogat EEPROM_write funktionen (programmeras i C) jag använder den 16F877 kanske du ser något som saknas i din rutin? void EEPROM_write (byte adresse, byte Daten) {EEPGD = 0, DO {asm ("clrwdt");} while (WR), EEADR = adresse, EEDATA = Daten, WREN = 1, GIE = ​​0, EECON2 = 0x55; EECON2 = 0xAA, WR = 1, GIE = ​​1, WREN = 0;} vänliga hälsningar
 
Tack C-Man för snabb respons! Jag använder inte TMR0 på programmet. Jag programmerar direkt i assembler med MPLAB. Jag tilldelar presacaler till WDT: __ config _xt_osc & _wdt_on & _pwrte_on & _cp_off BCF option_reg, PSA och detta är eeprom skriv rutine: eewrite clrwdt BSF status Rp0 BCF eecon1, eeif BSF eecon1, wren BCF intcon, gie movlw h '55 'movwf eecon2 movlw h'aa' movwf eecon2 BSF eecon1, WR notyet btfss eecon1, eeif clrwdt Gå notyet BCF eecon1, eeif BCF eecon1, wren BSF intcon, gie BCF status, Rp0 tillbaka Programmet fungerar bra i alla övriga de rutines är bara när jag anger en ny kod på knappsatsen att återställs. Om jag inte använder WDT den skriver till eeprom utan problem. Tack för hjälpen.
 
Vad sägs om det här? [Color = red] notyet clrwdt btfss eecon1, eeif Gå notyet [/color] Annars är fångade inne i waitloop utan att återställa vakthund när eeif sätts ... vänliga hälsningar
 
Jag glömde att posta detta: BCF option_reg, ps2, ps2 PSA BCF option_reg, PS1, PS1 PSA BCF option_reg, PS0, PS0 PSA jag använder maximivärde PRESCALER (1:128) för WDT, som ska ge mycket tid för skrivoperation i 16F84 databladet finns en bild som stater för 5 volt VDD skriv tiden för EEPROM är drygt 5ms, bör WDT återställs varje 18 ms x 128 = 2304 ms. Thats mycket tid för skrivoperation! [Size = 2] [color = # 999999] Läggas till efter 3 minuter: [/color] [/size] ledsen, skrev jag ett snitt & klistra från mitt program som körs nu (PRESCALER = 1) Jag har redan provat detta : BSF option_reg, ps2, ps2 PSA BSF option_reg, PS1, PS1 PSA BSF option_reg, PS0, PS0 av PSA (PRESCALER = 128) [size = 2] [color = # 999999] Läggas till efter 2 minuter: [/color] [/size] Ah ok, jag minns inte om jag redan försökt det, jag tror att jag gjorde men inte för shure. Nu är 2 på morgonen här och min fru kommer att killme om jag börjar ta isär låset, jag ska försöka att i morgon och låta dig veta. Tack ...
 
Du missförstod mitt svar vänligen titta på det igen. Din rutin återställer vakthund så länge eeif inte är inställd, men så snart det är inställt att det inte återställer vakthund längre men fortfarande slingor (tills ingen mer utlösta vakthund återställer PIC)! Också titta igen på databladet om du vill ha maximal prescaler måste du [color = red] in [/color] psa att tilldela prescaler till vakthund. vänliga hälsningar
 
Ja du har rätt, jag har klippt och klistrat från programmet som det fungerar nu, mitt misstag. Eftersom jag inte kunde få det att fungera jag försökt massor av olika saker och trasslat upp. Jag är inte ringer längre skriv eeprom rutine och jag bara använder låset med de koder jag programmerade när jag brände programmet i PIC. Jag får ut PIC från låset i morgon och gå igenom programmet igen. Hälsningar ...
 
Ok C-man, är &% &&% $ $% sak fungerar nu. Problemet var det du påpekade. Jag kan tro jag tillbringade veckor att skriva programmet och sedan inte i en sådan dum sak!! Tja, du lär dig av dina misstag rätt? Tack för hjälpen.
 

Welcome to EDABoard.com

Sponsor

Back
Top