pic16f873 se resetea

Hola buena tarde,
estoy utilizando en un proyecto el pic16f873, corre todo bien y normal hasta que entra a una rutina que manda llamar a otras rutinas de retardo y es ahi cuando se resetea, estas rutinas de retardo las he llamado en otra parte del programa y corren bien, pero cuando las mando llamar desde esta parte el pic se resetea, lo desconecto y cuando lo conecto se está reseteando cada vez, es como si se guardara informacion de donde se quedó y ya no sale de ahi hasta que lo vuelvo a programar. ayuda por favor no se si sea el brown aunque lo he desactivado,tambien el wdt.

saludos.
 
El 99% de la falla es por un programa mal echo...
postea tu código y veremos que tal está...
 
ok aqui adjunto el codigo. Lo que hace el programa es sensar por medio del adc y prueba si hay señal alto o bajo en determinados pines. esto lo envia a una pagina web por medio de un modem inalambrico. los retardos son sólo para esperar 2 minutos ya que es el periodo de sensado.

se que no es la mejor progrmacion pero me funcionaba antes de poner esos retardos.

el reset lo hace en los retardos que se encuentran en la etiqueta "guardar"
 

Adjuntos

  • CODIGO UNO.txt
    48.8 KB · Visitas: 31
Última edición:
Wow, es bastante...
En fin, use el simulador del MPLAB para descartar el mal acceso a bancos/pila; también desactive el WatchDog (puede ser la causa) desde la palabra de configuración; luego descarte todas las Call y solamente he usado el Goto Guardar desde la Rutina principal y Goto STA desde la rutina Guardar y todo bien...
Es decir que donde indicas, no sucede el error (si el WatchDog está activo, resetea el chip); ahora no tengo el diseño de tu circuito o que es, pero hay dos lugares en donde se queda esperando un largo tiempo:

Código:
INICIOSSP
		BSF		STATUS,RP0			
		BSF		SSPCON2,SEN
		BCF		STATUS,RP0
		BTFSS	PIR1,SSPIF    
		GOTO	$-1
		BCF		PIR1,SSPIF
		CALL	DIEZ
		BCF		STATUS,RP0		
	RETURN

Y en....
Código:
RECIBE
         ....
         ....
         	BTFSS	PIR1,RCIF
		GOTO	$-1

Si el WatchDog está activo y si no usas la instrucción CLRWDT en las rutinas de espera, entonces el chip se reinicia.

Intenta descartar mal uso del la Pila, mal uso de los Bancos usando el simulador del MPLAB u otro simulador como el proteus; si tu circuito es muy complejo, hazlo por partes y no usando todo el programa, es decir... comenta las subrutinas que creas que van bien y simula el resto para descartar errores.

Saludos
 
Hola buena tarde, gracias por su apoyo.
Bueno lo que hace el programa es leer una señal por medio del adc, la
convierte a bcd y despues a ascii, testea ciertos pines del pic para ver
su estado digital y tambien los convierte a caracteres ascii,
posteriormente si hay señal de celular los envia a una base de datos en
internet, de lo contrario los guarda en una eeprom y cuando hay nuevamente
señal los envía.
el programa funcionaba bien si lo hacia con retardos de 1 o 2 segundos, pero
cuando aumentaba el tiempo de retardo se reseteaba y solo llegaba hasta la
primer instruccion, cuando yo respondia con un "ok" se volvia a resetear y
ya no salia de ahi.
Ayer realice algunas pruebas y al insertar algunas instrucciones me di cuenta
de que el reset no ocurre en la rutina de "guardar" ya que entre mayor sea la
cantidad de instrucciones el pic se resetea mas rapido osea en menor cantidad
de instrucciones.
He decidido hacer la siguiente prueba:
1.- le voy a cargar el programa que fucniona al pic.
2.- voya a leer el hex del pic y lo voy a comparar con el original.
3.- si es el mismo esta correcto.
4.- despues ejecuto el circuito y cuando ocurra el reset lo retiro y leo el
hex y lo comparo con el original para ver que no se autoprogramo.
5.- si es asi que puedo hacer?
ó tengo la sig idea:
1.- leer los registros de configuracion como pcon, palabra de configuracion,
status y otros registros clave y los envío por la uart para ver cual
cambia al momento del reset y poder ver cual es el que ocasiona el
error.
alguna otra idea?
 
si tu proyecto esta sometidos a campos magneticos externos esto puede hacer que tu pic se resetee esto me lo explicaron los de GRS de bahia blanca en una expo cuando les pregunte para que servia la bobina que tenia el robot si supuestamente son autonomos si me me mintieron fue una mentira bastante creible igual esto lo podes ver tapando el pic con una jaula de faraday que podes hacer con papel aluminio
 
que tal mati89, ok voy a checar eso, aunque no creo que sea eso ya que corren todos los programas y éste no, sólo ocurre el reset cuando llama varias veces a otras rutinas que ya habia llamado antes. si lo dices por lo del modem ya que en el envío o recepcion de datos emite una gran frecuencia y pueda causar que el pic se resetee, ahorita para las pruebas el micro lo tengo conectado a la pc simulando el modem con un programa llamado docklight hace lo mismo que la hyperterminal de windows. pero haré la prueba.
gracias y saludos.
 
Atrás
Arriba