que tal?, tal como dice el titulo tengo un problema con el pic18f26j50 que se me reinicia cada una cierta cantidad de tiempo, si bien tengo el wdt apagado lo mismo sucede, no se si a alguien le paso esto, les dejo los fuses en la manera que los tengo configurados y ustedes me diran
#include <18F26J50.h>
#device adc=10
#device ICD=TRUE
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Postscaler
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES DEBUG //No Debug mode for ICD
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES NOSTVREN //Stack full/underflow will cause reset
#FUSES NOPROTECT //Code not protected from reading
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES IOL1WAY //Allows only one reconfiguration of peripheral pins
#FUSES PRIMARY //Primary clock is system clock when scs=00
#FUSES NOWPCFG
#FUSES WPEND
#FUSES WPDIS
#FUSES NOCPUDIV
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES T1DIG,MSSPMSK7 //No PLL PreScaler
#FUSES DSWDT2147483648,DSWDT,DSBOR,DSWDTOSC_INT,WPFP
#use delay(clock=12000000) //Utilizo frecuencia de 12Mhz
En la configuracion de los bits esta aclarado que una vez apagado el WDT empieza a trabajar el SWDT que en la hoja de datos dice el registro que usa y es el WDTEN y tiene un valor de 0E lo que dejaria los bits configurados de la siguiente manera en binario 00001110 y justamente el ultimo bit que esta en 0 es el SWDT que en la hoja de datos dice que en 0 esta OFF.
Dadas esas circunstancias llegue a la conclusion de que me termine de confundir porque ahora si que no se a donde esta el problema
el codigo del main hace basicamente lo siguiente:
Inicializa el modulo GSM, y espera un mensaje donde la funciones utilizadas son las siguientes
void adquirir()
{
int32 timeout;
timeout=0;
int i=0;
for(i=0;i<m;i++)
dato[i]="\0";
i=0;
while((timeout==0)&&(i<m))
{
while(!kbhit()&&(timeout<50000))
{
timeout++;
delay_us(10);
}
if(kbhit())
{
dato[i]=fgetc(SERIAL_GSM);
i++;
timeout=0;
}
}
return;
}
int RECEPCION_MENSAJE()
{
char aviso_de_mensaje[6]="+CMT:";
int recibido;
adquirir();
if (strstr(dato,aviso_de_mensaje)!=NULL)
recibido=1;
else
recibido=0;
return(recibido);
}
en el main lo unico que hago es dejar un while(RECEPCION_MENSAJE()); para que hasta que no llegue el mensaje no siga la rutina.
Espero que se entienda algo y si alguien tiene idea que me de una mano. Desde ya muchas gracias.
Saludos!