TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: PICDEIVID1.1 en 03 de Diciembre de 2003, 16:50:00

Título: Novato en problemas.. 16F84A se reinicia
Publicado por: PICDEIVID1.1 en 03 de Diciembre de 2003, 16:50:00
Hola que tal ,   muy buen sitio!!!!

Soy un estudiante de ingenieria en electrónica
apenas estoy programando mi primer pic  el grandiosisimo 16f84A
pero tengo un problemita espero alguien me pueda ayudar.

He metido al pic un sencillo programa para que funcione como un semáforo. no utilizo interrupciones, solo utilizo la instrucción DECFSZ para saltar un goto en una subrutina que sirve para hacer un DELAY de 0.5 Segundos. el problema es que al momento de probar el programa en el pic este se reinicia solo sin terminar de hacer todas las instrucciones.

Ya he intentado lo siguiente:

Desactive el WatchDog desde el encabezado

list p=16f84A
   include   <p16f84A.inc>
_WDT_OFF                     EQU     H\"3FFB\"
_RC_OSC                      EQU     H\"3FFF\"

Desactivo el bit GIE del registro INTCON (ya intente desactivando los demas)

El programa lo inicio desde la posición h\"20\" de la EEPROM para brincarme la 05 que es donde esta la interrupcion

en org 0 le doy un goto INICIOpara irme a la 20
y por si a caso entra la interrupcion en la 05 tengo un RETFIE

Solo utilizo el PORTB como salidas

para salir de dudas ya intenté haciendo el programa sencillo sin subrutinas y suprimiendo la instrucción DECFSZ y de todos modos en algun lugar el pic se reinicia.

estare muy agradecido ya que hice y deshice el programa y pues llegué a la brillante deducción de que el problema es de una parte del pic que desconozco aun.  

no pude adjuntar el programa pero aqui esta el encabezado

   list p=16f84A
   include   <p16f84A.inc>
_WDT_OFF                     EQU     H"3FFB"
_RC_OSC                      EQU     H"3FFF"
AA       equ     H"0C"    ; Variable utilizada en la subrutina MEDSEG
BB       equ     H"0D"    ; "     "       "       "
CC       equ     H"0E"    ; "     "       "       "
DD       equ     H"0F"    ; Utilizada en la subrutinas DOSSEG y SEISSEG y para el numero de
            ; parpadeos del led verde
   ORG   0   
   GOTO   CERO
   
   ORG   5
   RETFIE

CERO   ORG   20      ; Inicia en la posicion Cero del programa
   BCF   INTCON,GIE
   BCF   INTCON,EEIE
   BCF   INTCON,T0IE
   BCF   INTCON,INTE
   BCF   INTCON,RBIF
   BCF   INTCON,T0IF
   BCF   INTCON,INTF
   BCF   INTCON,RBIE

   BSF   STATUS,RP0
   MOVLW   d"00"
   MOVWF   TRISB
   GOTO   INICIO
INICIO  MOVLW   b"00100001"     ; Enciende Rojo, Verde
   MOVWF   PORTB           ; Envia el dato al puerto BB
        CALL    SEISSEG            ; Llama a un retardo de 6 seg.
   MOVLW   d"004"      
        MOVWF   DD               ; DD = 4
FLIP    MOVLW   b"00100001"
        MOVWF   PORTB           ;Enciende Rojo, Verde
   CALL   MEDSEG      ;Retardo de 0.5Segundos
   MOVLW   b"00100000"   





gracias y un saludo a los picmaniacos


Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: todopic en 03 de Diciembre de 2003, 17:18:00
hola, creo esta mal el encabezamiento...

prueba con esto


   LIST  P=16F84A
   #INCLUDE "p16f84A.inc"
   ERRORLEVEL      -302, -307    ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA)


;---------------------------------------------------------------------------
   __CONFIG _CP_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC   ;CONFIGURO
;PARA LA GRABACION, CODE PROTECT On, RESET DE ENCENDIDO PERRO GUARDIAN=SI,ETC

reset   org   00h   ;el vector de reset es la dirección 00
   goto   inicio   ;se salta al inicio del programa


fijate que te falta la palabra  __config

para cargar archivos, lo puedes hacer en www.todopic1.foro.st  que es el almacen, ya que aqui no hay mas lugar...


Suerte!

Norberto
pd...  las barras a la izquierda no corresponden...


Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: achamber2k3 en 03 de Diciembre de 2003, 17:25:00
Ya que hablan de esto quiero comentarles mi experiencia a ver si a alguno le sirve de algo, monte un reloj contador descendente y tenia un problema similar, el PIC se reiniciaba cuando el contador llegaba a determinado numero, despues de perder mi tiempo revisando el firmware, watchdog y todo eso, entre a revisar el circuito, pues resulta que tenia un pin del puerto configurado en salida que estaba en corto con otro y al hacerse uno alto y otro bajo hacian corto circuito y el pic se reiniciaba.

Asi que cuando les ocurra esto no siempre es firmware.

Suerte en sus proyectos.

Saludos,

AChamber.
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: ejmc en 03 de Diciembre de 2003, 19:24:00
Hola, otra cosita, le pusiste la resistencia de 4k7 entre MCLR (pin 4)
y Vcc
Yo siempre me olvido y me pasa eso, se reeinicia en cualquier parte
Saludos
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: pocher en 03 de Diciembre de 2003, 23:08:00
Se te reiniciará seguramente por culpa del "perrito". Este lo puedes desactivar (si no lo vas a usar) bien en la palabra de configuración, como bien te indica Norberto, bien desde el programa grabador del PIC (por ejemplo el ICPROG). Si lo quieres usar hay que incluir en el programa la instrucción clrwdt

Un saludo
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: Elena2000 en 04 de Diciembre de 2003, 03:13:00
Eso es, ratifico lo que apunta Pocher. Utiliza el perro guardián y pon la instrucción clrwdt cada vez que inicies un bucle.

Saludos!
Elena
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: felipito1 en 04 de Diciembre de 2003, 20:30:00
Tambièn puede ser que el programa en determinada parte estè con el PCLATH desubicado y le salta para donde no es...  y se le bloquea o se và para inicio,  podrìa ocurrir al utilizar un GOTO, ò un ADDWF ò un CALL  etc.
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: elreypic en 10 de Diciembre de 2003, 16:50:00
Hola revisando el codigo que proporcionas, me doy cuenta que estas trabajando la RAM en un banco equivocado. En tu código tienes:

BSF STATUS,RP0
MOVLW D"00"
MOVWF TRISB
GOTO INICIO                    ;Aqui esta tu problema

Tu codigo debería ser:

BSF STATUS,RP0                ;Coloca RAM en el banco 1
MOVLW D"00"
MOVWF TRISB
BCF STATUS,RP0                ;Regresa al banco 0 de la RAM
GOTO INICIO
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: lager en 21 de Diciembre de 2003, 13:31:00
yo tuve el mismo problema con un programa super sencillo de pender un led al activar un pin, y no era para nada el software, lo que debes hacer es crear un programa sencillo si tienes el mismo problema de reinicios  y reinicios, lo mas seguro que sea es la fuente mi amigo, yo cambie mi fuente y dejo de tener esos errores, el por que??? no lo se pero la cambie y todos mis programas han funcionado sin ese problema.
baygon
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: fopy en 22 de Diciembre de 2003, 04:36:00
Adhiero a la rta de EJMC, tenes que poner un 1 en (MCLR, ya que trabaja con logica inversa y está activado con cero) basta con una resistencia de 1k a Vcc
Título: RE: Novato en problemas.. 16F84A se reinicia
Publicado por: El_cuarenton en 27 de Diciembre de 2003, 21:47:00
Hola.

Te aconsejaria que revises el tema de la fuente de alimentacion.
Esta el condensador entre las patas de alimentacion del pic lo mas proximo posible.
Esta la tension totalmente estabilizada.
El reset esta a uno.
Me gustaria leer el codigo completo.

Suerte El_cuarenton