Autor Tema: PIC Boom  (Leído 1990 veces)

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

Desconectado CDT_Gonzalo

  • PIC12
  • **
  • Mensajes: 93
PIC Boom
« en: 06 de Abril de 2004, 00:40:00 »
Hola a todo el mundo

tuve un problemon...hace poco compre mi 3er PIC (me gustan los 16F628), y venia todo bien, estuve boludeando un rato, haciendo pruebas de retardos, contadores con un 74LS47, hasta que tuve la bendita idea de meterme con un display LCD

Guiado por un libro el cual creo que no me va a guiar mas :P hice todo el conexionado el cual parecia correcto, ya que seguí el orden de las patas y pude regular el brillo sin problema, no solo eso, corroboré el pinout con la hoja de datos del controlador (creo que ya es un clásico en materia de LCDs, el HD44780 de Hitachi, lo oi nombrar mucho)...todo muy bonito..hice un programa bastante simplón para, al menos, resetear el LCD y que no aparezca la mitad vacia y la mitad con un caracter completo (es un 1x16 sacado de una impresora vieja..segun mi profesor de computacion, estos LCDs manejan la segunda parte [los 8 caracteres de mayor peso] como si fuese una segunda linea, porque será no lo se)....

Adjuntoles el programa
Cita:

   LIST P=16F628
   #INCLUDE<P16F628.inc>

   #DEFINE   RS   PORTA,0
   #DEFINE   RW   PORTA,1
   #DEFINE   E   PORTA,2

   __config   0x3f10

   CBLOCK H"20"
   CounterA
   CounterB
   ENDC

   ORG H"00"
   goto inicio

retardo
;PIC Time Delay = 0,0400020 s with Osc = 4,000000 MHz
   movlw   D"52"
   movwf   CounterB
   movlw   D"241"
   movwf   CounterA
loop   decfsz   CounterA,1
   goto   loop
   decfsz   CounterB,1
   goto   loop
   return

inicio
   movlw   B"00000111"
   movwf   CMCON

   bsf      STATUS, RP0
   clrf   TRISA
   clrf   TRISA
   bcf      STATUS, RP0

   ;iniciamos los estados
   clrf   PORTA
   clrf   PORTB

bucle
   ;iniciamos el display
   movwf   B"00000001"
   movlw   PORTB
   bcf      RS
   bcf      RW
   bsf      E

   call   retardo

   ;devolvemos a 0
   clrf   PORTA
   clrf   PORTB

   call   retardo

   goto   bucle

   END



El tema es que el maldito LCD no se reseteaba...pensé en que tal vez cuando mandaba la señal, el LCD no se habia iniciado correctamente, entonces armé el bucle que puden ver en el programa, para que se resetee continuamente, pero nada...

Se me ocurrio "debuggear" colgando una punta lógica...si leyeron el programa se dieron cuenta que por PORTB sacaba la data, mientras que por los 3 primeros bits de PORTA sacaba RS, RW y E en ese orden...

Al poner la punta lógica en RA2 oscilaba correctamente...pero al poner la punta lógica en cualquier pin de PORTB tenía cualquier estado menos el que le habia sacado por software (debería haber sido B"00000001"), por lo tanto deducí que el mismo LCD estaba sacando estados...

El tema es...desde ese momento (como era de esperarse) no reacciona mas el IC...si lo programo en ic-prog no me da las verificaciones, y si pongo la punta lógica cuando el IC esta vacio me da en estado bajo PORTA y en estado alto PORTB

En definitiva, me quiero matar, pero porque habra sido eso??...
$12.50 a la basura odio la electronica