Autor Tema: Problemas con 16F628  (Leído 1642 veces)

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

Desconectado gsc

  • PIC10
  • *
  • Mensajes: 10
Problemas con 16F628
« en: 23 de Septiembre de 2007, 20:31:56 »
Hola a todos, estube trabajando con el pic 16f84a y al necesitar mas memoria de programa, llegue a la conclucion de que el 16f628/648 seria la solucion. Todo iba bien hasta el uso de la interrupcion.

En el 16f84a, por RB0 tengo conectado un lector de tarjetas de proximidad que me da el codigo en formato RS232. Con este pic, iba aramndo el dato con una rutina de interrupcion con dos retardos para lograr el format rs323 a 9600,n,8,1  (todo OK).

En el 16f628, no se si lo configure bien, pero siempre se activa la rutina de interrupcion sin que ingrese ninguna tarjeta, le he puesto una resistencia de pulldown para que no se active la interrupcion sola, pero tampoco funciona, despues hice varias cambios mas pero nada.

El seteo de las interrupciones son las siguientes:

   ;----------------------------------------------------------------
   ;Seteo de interrupcion

   bsf   status,5
   bsf   option_reg,intedg   ;PROGRAMA INT CON FLANCO DE SUBIDA
   bcf   status,5


   ;-------------------------------------------------
   ;PROGRAMACION DE LA INTERRUPCION INT(RB0)


   bsf   intcon,inte      ;HABILITA INTERRUPCIÓN INT
   bsf   intcon,gie      ;HABILITA INTERRUPCIONES GLOBALMENTE




Luego la rutina de interupcion es basicamente esta:


int1   call   rxdato      ;Rutina de captura de dato (va armando el dato bit a bit serie RS232)
   xorlw   true      ;cuando vuelve de la subrutina pregunta si es true

   bz   rx_dato      ;branch if zero ,Aqui pongo lo que tengo que hacer con dato.

   bcf   intcon,1                   ;Si no son iguales (false) BORRA BANDERA INT (habilito interrupciones)
   retfie

rx_dato   call    codi      ;Rutina que va guardando los codigos de la tarjeta ingresada en codigo1...codigo12
   decfsz   contco,1
   goto   int1


Bueno, esto es todo. si alguien me puede dar una mano, desde ya se los agradeciria mucho.

Saludos a todos

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Problemas con 16F628
« Respuesta #1 en: 24 de Septiembre de 2007, 00:46:42 »
Intenta desactivando el Brown-out Reset.
Este tema me ha dado algunos dolores de cabeza en un principio.-

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Problemas con 16F628
« Respuesta #2 en: 24 de Septiembre de 2007, 01:54:32 »
Hola gsc, sería más interesante y casi seguro más entendible si nos colocaras todo el programa tal cual lo tienes.

Por otro lado puedo ver que realizar una llamada CALL y retornas con un GOTO, es un error ya que el CALL debe retornar con un RETURN.

Y la instrucción BZ no es admitida en la gama 16F

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado gsc

  • PIC10
  • *
  • Mensajes: 10
Re: Problemas con 16F628
« Respuesta #3 en: 25 de Septiembre de 2007, 00:05:04 »
Gracias Savagechicken, creo que se soluciono con lo del Brown-out Reset. Ahora me funciona la INT.

y Gracias Charly29 por interesarte, lo del BZ me habian pasado un pedazo de codigo y lo estaba usando (lo voy a cambiar)  y con lo del CALL esta bien porque si te fijas hay un rxdato y un rx_dato (voy a tener que ser mas creativo con los labels .. je je).

Pero gracias a ambos por las molestias.

Saludos