Bonjour,
J'ai un souci avec un plantage de PIC18F452 alors que le watchdog est activé.
Je travaille avec PICC 4.110 et un programmateur ICD-U40.
Dans l'atelier, mon projet n'a jamais planté, mais une fois sur place (il s'agit de réguler un groupe froid, avec un moteur de 75kW), il se met à planter à intervalles aléatoires. Il s'agit forcément de parasites extérieurs, mais que faire ?
J'ai testé avec un délai de 3 secondes dans la boucle principale et le watchdog est fonctionnel. Je ne sais plus quoi faire pour éviter ces plantages...
Merci d'avance.
Voici mon header (la partie de configuration) :
Voici un extrait de mon code C :Code:#include <18F452.h> #device adc=8 #FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale #FUSES HS #FUSES PROTECT //Code protected from reads #FUSES NOOSCSEN //Oscillator switching is disabled, main oscillator is source #FUSES NOBROWNOUT //No brownout reset #FUSES BORV20 //Brownout reset at 2.0V #FUSES NOPUT //No Power Up Timer #FUSES STVREN //Stack full/underflow will cause reset #FUSES NODEBUG //No Debug mode for ICD #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOWRT //Program memory not write protected #FUSES NOWRTD //Data EEPROM not write protected #FUSES NOWRTB //Boot block not write protected #FUSES NOWRTC //configuration not registers write protected #FUSES NOCPD //No EE protection #FUSES NOCPB //No Boot Block code protection #FUSES NOEBTR //Memory not protected from table reads #FUSES NOEBTRB //Boot block not protected from table reads #use delay(clock=20000000)
Code:#include "main.h" #ZERO_RAM #int_TIMER2 void TIMER2_isr(void) { // Du code sans importance } void main() { setup_adc_ports(AN0_AN1_AN3); setup_adc(ADC_CLOCK_DIV_32); setup_wdt(WDT_ON); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DIV_BY_4,30,1); setup_timer_3(T3_DISABLED); enable_interrupts(INT_TIMER2); enable_interrupts(GLOBAL); while(true) { restart_wdt(); // Du code sans importance } }
-----