Autor Tema: [Ayuda] 16F84A. No funciona el programa en el PIC.  (Leído 3188 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
[Ayuda] 16F84A. No funciona el programa en el PIC.
« en: 09 de Julio de 2011, 07:37:46 »
Llevo toda la mañana liado intenado hacer funcionar el siguiente programa en un 16F84A y no hay manera. (Adjunto el programa y simulacion en proteus)

La cosa es que en proteus funciona a la perfeccion, pero cuando lo grabo al PIC. El micro se queda pillado. No tengo todo el circuito hecho. Simplemente los pulsadores de entrada y en las salidas pruebo con un polimetro.

He probado el PIC con un programa que hace parpadear un LED y funciona a la perfeccion, por lo contrario mi programa no...

Lo grabo con ICPROG, desactivando el WTD y poniendo como oscilador XT.

Enfin porfavor ayudenme.

Saludos

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #1 en: 11 de Julio de 2011, 05:19:48 »
Solo he mirado este trozo de codigo pero creo que no esta bien.

Código: [Seleccionar]
;------------EXPLORANDO ENTRADAS-------------------
movlw d'10' ;Cargo REG1 con 10
movwf REG1
exploro0 btfsc PORTA,0 ;Exploro RA0
goto exploro1 ;Si es 1 voy a muestra
call retardo ;Si es 0 llamo a retardo(Rutina antirebotes)
clrf TMR0
decfsz REG1,1 ;Velvo de la rutina retardo y compruebo REG1
goto exploro0 ; si no es 0 (<160ms) vuelvo a explorar RB0
incf CREDITOS,1 ; si es 0 (160ms). Pulsacion correcta. Incremento CREDITOS

exploro1 btfsc PORTA,1 ;Exploro RB1
goto muestra ;Si es 1 voy a muestra
call retardo ;Si es 0 llamo a retardo
clrf TMR0 ;Pongo TMR0 a cero
decfsz REG1 ;Compruebo REG1
goto exploro1 ; si no es 0 vuelvo a explorar RB1
movlw 0
subwf CREDITOS,0
btfsc ESTADO,2 ; si hay 0 CREDITOS
goto muestra ; voy a muestra sin restar
;si hay 1 o ams creditos puedo restar

Primero no estas haciendo antirrebotes, el antirrebotes es leer un pin hacer un retardo de 20ms (el tuyo esde 16, creo que te vale) y VOLVER A LEER ESA ENTRADA OTRA VEZ, esta segunda lectura es la valida.
Despues estas leyendo RAO y si es 0 durante un tiempo, 16ms*10=160ms incrementas contador de creditos, es esto lo que quieres? o que se incremente cuando se pulse? Porque en el esquema esta a 0 en reposo, por eso supongo que quieres que se incremente al pulsarlo.

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #2 en: 11 de Julio de 2011, 06:23:14 »
Hola Tapi8.

Haber, antirebotes si que tengo, como bien dices de 16ms. Que segun me dijeron es suficiente. Ademas al simularlo en Proteus va bien. Sobre lo del programa... Pretendo incrementar al pulsar (pulso nivel bajo). En el esquema de proteus si te fijas bien, las entradas en reposo estan a nivel alto. Con lo cual se corresponde con el programa. Es mas si lo simulas funciona  ala perfeccion. El problema biene al grabarlo en el PIC. Que se quedan todas las salidas a nivel alto haga lo que haga. Lo unico que funciona es el Reset...

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #3 en: 11 de Julio de 2011, 06:47:48 »
Hola. El PIC no te hace caso a las pulsaciones no?. Prueba a ponerle los Pull-Up, de 10 k's a ver que pasa, porque si el problema no sucede en el proteus es por algo físico seguro.
Y es mejor que cierres el circuito en lugar de medir con polímetro directamente, yo pondría un led con un R de 220 en serie para ver si hace lo que debe.

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #4 en: 11 de Julio de 2011, 07:08:36 »
No hace caso ni a pulsaciones ni a nada. Solo el reset funciona.

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #5 en: 11 de Julio de 2011, 07:13:17 »
Prueba si no a grabarlo un programa chorras y ver si lo graba. Así te aseguras de que el PIC se graba correctamente y que el pin-header para grabarle tb está bien, etc. Empieza por ahí para ir descartando cosas.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #6 en: 11 de Julio de 2011, 07:15:03 »
Citar
Haber, antirebotes si que tengo, como bien dices de 16ms. Que segun me dijeron es suficiente

No, no tienes antirrebotes, por lo menos yo no los hago asi.

Código: [Seleccionar]
btfsc    POTA,0
goto   $-1
call ANTIRREBOTES
btfsc   PORTA,0  ;esta lectura es la que vale, y aqui se toma la decision


Citar
En el esquema de proteus si te fijas bien, las entradas en reposo estan a nivel alto. Con lo cual se corresponde con el programa. Es mas si lo simulas funciona  ala perfeccion.

Aqui tienes razon no habia visto la masa que esta fuera del recuadro. Perdon.

Prueba lo que te dice NoSepComo, posiblemente sea eso.

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #7 en: 11 de Julio de 2011, 07:41:42 »
Perdona que te contradiga de nuevo. Pero si que tengo antirrebotes, simplemente estan hechos de otra manera. Te lo aseguro, porque antes no los tenia y al pulsar, el display se volvia loco incrementando. Hasta que me dijeron que pusiera antirebotes. Lo hice y ahora si que va bien.
Miralos bien y ya veras como hacen la misma funcion que tu codigo.

Sobre las resistencias pull-up. Las tengo instaladas en una protoboard. De todas formas voy a revisar toda la placa haber si tengo algun problema...

Saludos y muchisimas gracias!!

PD: Nosepcomo, he probado un par de programitas de led que aprpadean. Y si que funcionan. Luego, creo que el grabador y el pic quedan descartados...¿no?

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #8 en: 11 de Julio de 2011, 08:44:15 »
Sip, quedan descartados.
Lo único que se me ocurría eran las resistencias de pull up, que son muy pequeñas y aunque la impedancia de entrada en la patita del PIC sea grandota, el divisor de tensión que existe te puede hacer que aparezca hay una tensión suficiente para un uno lógico, no lo sé. Yo siempre las uso de 10 k.
Otra alternativa es que introduzcas tiempos de espera inactiva dentro del programa, aparte de para los rebotes mecánicos, dentro de la ejecución. Prueba a meter algún retardo en tu código.
Ya nos contarás, un saludo.

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #9 en: 11 de Julio de 2011, 08:52:07 »
No hay manera...

He vuelto a grabar el PIC, lo he colo cado. Y al alimentarlo, toda la puertaB se me pone a 1. Y haga lo que haga, se queda todo a 1. Solo responde al pulsar el reset, que se apagan las salidas y se vuelven ha encender.

La cuestion es que si en el Proteus funciona bien, porque cojones no funciona en la practica.

... Joder...

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #10 en: 11 de Julio de 2011, 09:26:41 »
Habilitas el PUT (power up timer)? creo que deberias hacerlo.

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #11 en: 11 de Julio de 2011, 09:50:35 »
SOLUCIONADO!!!!

Era simplemente, que al empezar el programa no ponia a cero los registros auxialiares, reg1, reg2, reg3 y creditos. Y entonces el PIC se quedaba bloqueao. Tenia que mantener pulsado una entrada y ala vez pulsar reset y ya funcionaba el programa.
Ahora ya va perfect.
Soy novato en el tema, supongo que borrar los registros al empezar es algo importante, no?

Código: [Seleccionar]
;-----------CONFIGURANDO LOS REGISTROS--------
inicio ORG 5
bsf ESTADO,5
movlw b'01000110'
movwf TMR0
movlw b'00011011'
movwf PORTA
clrf PORTB
bcf ESTADO,5
[b]clrf PORTB
clrf CREDITOS
clrf REG1
clrf REG2
clrf REG3[/b]

SALUDOS Y MUCHISIMAS GRACIAS POR VUESTRA AYUDA!!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #12 en: 11 de Julio de 2011, 13:23:51 »
Muchas veces el simulador entiende q los registros comienzan de 0,, pero por eso siempre en el programa asegurate de ponerles el valor q les corresponde a cada registro que te pueda molestar.. Asi te aseguras de antemano que no es ese el problema.

De todas formas me alegro que ahyas podido solucionar tu problema

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #13 en: 11 de Julio de 2011, 13:31:42 »
Me alegro   :-/ :-/ :-/

Desconectado glow_ing

  • PIC10
  • *
  • Mensajes: 22
Re: [Ayuda] 16F84A. No funciona el programa en el PIC.
« Respuesta #14 en: 12 de Julio de 2011, 06:29:34 »
Yo tambien me alegro, de solucionarlo. Y de que haya gente como ustedes dispuestos a ayudar a los novatillos como yo... jeje

Muchisimas gracias.

Saludos!!