Problema RESET 16F887

Hola compañeros ;)

Tengo una pequeña duda sobre un proyecto que estoy haciendo. Estoy comunicándome desde Matlab mediante un adaptador USB/485 a un PIC16F887 programado con CCS y la verdad que el funcionamiento es bastante bueno excepto un pequeño asunto que no logro entender...

Cuando desconecto la alimentación y pasa un rato (10min+) al volver a trabajar no me funciona. He podido ver por un led que he puesto en el transceiver que hice que a la placa si llega la información del PC y que además el código del micro sigue ahí porque tengo un led que en la inicialización del código se enciende y se mantiene encendido. He acotado que el problema debe estar en algo del micro pero sinceramente no tengo idea de que puede ser, había pensado un problema en la interrupción del USART pero es que no tiene sentido. Para que funcione de nuevo necesito volver a programar el micro, pero vaya quiero saber cuál es el problema y arreglarlo porque de esta manera es muy incómodo.

Estaría muy agradecido si alguien pudiera darme algún consejo sobre este asunto.

Muchas gracias de antemano compañeros :)
 
Si al desconectar la alimentacion el led sigue encendido entonces el micro esta "agarrando" la alimentacion de algun otro lado, haciendo que funcione mal ya que desconoces que voltaje le esta llegando y por donde...

Publica tu circuito para poder analizar que puede estar pasando...
 
Primeramente gracias por tu respuesta. Ya he solucionado el problema, cuando hacía un POR desconectando y conectando la alimentación el código de alguna manera se quedaba colgado antes de llegar al while (true). En cambio haciendo el reset manual por MCLR iba perfecto. Me miré el DTS entero para ver las diferencias entre resets y la verdad que prácticamente son nulas... Así que empecé a destrozar el código para buscar el lío que debía estar en la inicialización. Por lo visto la comanda enable_interrupts(INT_EXT) no le gustaba al compilador (en el código no la usaba de momento porque esta desarrollándose todavía). Fue quitarla y los dos resets funcionan perfecto, cosa que no puedo encontrar una solución que me acabe de convencer, alguien tiene alguna idea? He probado en instanciar otras interrupciones que no uso en código y no hay problema. Estaría muy agradecido si alguien me premiara con un poquito de su sabiduría :) Muchas gracias compañeros!
 

Adjuntos

  • main.zip
    2.5 KB · Visitas: 3
Última edición:
Atrás
Arriba