TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: wharata en 21 de Mayo de 2009, 21:38:30

Título: Problemas con el PIC16F628
Publicado por: wharata en 21 de Mayo de 2009, 21:38:30
Hola Amigos, estoy comenzando a programar el PIC16F628, pero en lo más básico como es encender un led no puedo hacerlo funcionar, ya he probado mil alternativas, de lenguaje, con el programador, cambié de PIC por si estaba fallado el que usaba y no logro que funcione mi pequeño programa, lo curioso es que he usado el simulador de MPLAB verificando paso a paso el funcionamiento y en teoría funciona, pero como siempre pasa, la teoría no es igual a la práctica, se que esto es muy tonto para Uds., pero quisiera de ser posible si alguien pudiera darme una mano y talves pueda orientarme en donde esta mi falla.
La idea del software es hacer parpadear un led a 1Hz por el bit 0 del PORTA, el software que desarrolle es este:

;Primer proyecto después de mucho tiempo, voy a hacer parpadear un led a una
;frecuencia de 1Hz
      list   p=16f628
      errorlevel 1, -302
;Declaración de registros
status      equ   0x03
cmcon      equ   0x1f
trisa      equ    0x85
trisb      equ   0x86
porta      equ   0x05
;Declaración de variables
tiempo0      equ   0x20      ;en estos registros, se almacenan los tiempos de espera
tiempo1      equ   0x21
tiempo2      equ   0x22
;Declaración de bits
rp0      equ   5
rp1      equ   6
ra0      equ   0
;Inicio
      org   0
      
      movlw   0x07
      movwf   cmcon      ;apaga los comparadores, configura puertos como I/O
      bsf   status,   rp0   ;selecciona bank 1
      bcf   status,   rp1
      clrf   trisa      ;configura todos los bits del puerto A como salida
      movlw   0x01
      movwf   trisb      ;configura bit1 del puerto B como entrada, los demas como salida
;Rutina Oscilador
      bcf   status,   rp0   ;selecciona bank 0
led      bsf   porta,   ra0   ;enciende led
loop3      movlw   0x03
      movwf   tiempo2
loop2      movlw   0xfe
      movwf   tiempo1
loop1      movlw   0xda
      movwf   tiempo0
loop0      decfsz   tiempo0,1      
      goto   loop0      ;salta hasta que transcurran 659µSeg.
      decfsz   tiempo1,1
      goto   loop1      ;salta hasta que transcurran 167mSeg.
      decfsz   tiempo2,1
      goto   loop2      ;salta hasta que transcurran 501mSeg.
      btfss   porta,   ra0   ;verifica si el led esta apagado o encendido
      goto   led      ;esta apagado, va a encenderlo
      bcf   porta,   ra0   ;apaga led
      goto   loop3
      
      end
Título: Re: Problemas con el PIC16F628
Publicado por: Suky en 21 de Mayo de 2009, 21:50:43
Muestranos como estas configurando los fuses del microcontrolador y como lo estas aplicando en el hardware. Aquí (http://www.todopic.com.ar/foros/index.php?topic=24720.msg201392#msg201392) puedes ver varios ejemplos en asm para este PIC.
Título: Re: Problemas con el PIC16F628
Publicado por: wharata en 21 de Mayo de 2009, 22:09:16
Muchisimas gracias Suky por tu rapidísima respuesta, bueno, te informo como tengo configuados los Fuses ahora en el programador:
OSC: INTRC/IO
WATCHDOG: OFF
POWER-UP TIMER: ON
RESET: INT
BROWN OUT: OFF
DATA EE MEMORY CODE PROTECTION: OFF
LOW VOLTAGE PROGRAMMING: ON
Título: Re: Problemas con el PIC16F628
Publicado por: BrunoF en 21 de Mayo de 2009, 22:57:02
por que el low voltage programming? los osciladores internos suelen ser mas mañosos, proba con uno externo primero hasta que te funcione.
Título: Re: Problemas con el PIC16F628
Publicado por: wharata en 22 de Mayo de 2009, 00:34:27
Gracias Gente!!!, resuelto el problema después de lidiar un par de dias, 2 pasos tuve que ejecutar, como primera medida seguí la sugerencia de Bruno y desactivé Low Voltage Programming, y como segunda y no menos importante tuve que colocarle una resistencia a +V al pin 4 (MCLR), probé el fuse tanto activado como desactivado y la resistencia fue necesaria en ambos casos.
Gracias nuevamente, seguiré aprendiendo.
Saludos
Título: Re: Problemas con el PIC16F628
Publicado por: BrunoF en 22 de Mayo de 2009, 00:47:59
 :shock: Ahh joer! Habiamos asumido que estabas con una resistencia en MCLR, sino el uC se resetea constantemente y nada sucede. No se ese micro permite deshabilitar el MCLR.

En fin, felicitaciones!.