Autor Tema: 16f818 no funciona  (Leído 3997 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
16f818 no funciona
« en: 31 de Agosto de 2010, 21:52:27 »
Hola a todos, tengo un pequeño GRAN problema
En el proteus hice un circuito BIEN simple con un 16F818 y un LCD

Conecte los 8 bits del LCD al puerto B, E=RA0, RW=RA1 y RS=RA2

El codigo del programa es de los mas simple (me lo afane de Unicrom), lo hice en PSI y lo compile sin ningun problema, el reloj que uso es el interno:

AllDigital
TRISA = %00000000
TRISB = %00000000

Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTA
Define LCD_RSBIT = 2
Define LCD_EREG = PORTA
Define LCD_EBIT = 0
Define LCD_RWREG = PORTA
Define LCD_RWBIT = 1

Dim a As Word
a = 65535

Lcdinit 3
WaitMs 1000

loop:
Lcdout "¡Estoy contando!”"
Lcdcmdout LcdLine2Home
Lcdout #a
a = a - 1
WaitMs 250
Lcdcmdout LcdClear
Goto loop


Le doy a simular y no arranca ni de casualidad, pero el mismo ejemplo si anda con otro micro, que puede estar andando mal? quiero aclarar que el codigo lo compile, y programe el pic, pero ni siquiera anda en el protoboard, hace exactamente lo mismo, se ilumina el display y ahi queda  :?

Me pueden dar una mano?

Gracias!

Correccion: Me explique mal, lo quiero simular en el proteus o el protoboard y no funciona  :(
« Última modificación: 01 de Septiembre de 2010, 09:59:19 por wolfman77 »
Volviendo al mundo de los PIC....

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: 16f818 no funciona
« Respuesta #1 en: 01 de Septiembre de 2010, 05:49:33 »
Puede ser que en el simulador, por ser eso simulador, los tiempos no son reales y tradan una barbaridad en ejecutarse.
Creo que existe en el PSI la instruccion;

Define delayUs=1(o algo asi) mira en help quizas venga como se escribe correctamente:

que lo que hace es que no tiene en cuenta los tiempos de tu programa para que se ejecute mas rapido. Eso si despues de simular hay que dejarla comentada
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: 16f818 no funciona
« Respuesta #2 en: 01 de Septiembre de 2010, 05:56:56 »
La instrucion correcta a la que me referi en el post anterior es:ç



Define SIMULATION_WAITMS_VALUE = 1  'ignora los Waitms
Todos los días se aprende algo nuevo.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: 16f818 no funciona
« Respuesta #3 en: 01 de Septiembre de 2010, 09:57:51 »
Ups, perdon, me explique mal, no lo puedo simular en el Proteus, ni en el protobard por que no arranca ni pasandolo a nafta  :(

Estube viendo lo del adcon1 por que aparentemente las entradas analogicas (RA0 y RA1 creo que son) las tengo que pasar a digital, asi que pongo ADCON1 = 7 para pasar todo el puerto A a digital, pero tampoco va  :?

Volviendo al mundo de los PIC....

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: 16f818 no funciona
« Respuesta #4 en: 01 de Septiembre de 2010, 12:51:10 »
Lo que puedo realizar es si subes el esquema de proteus y el programa es intentar simularlo y seguir paso a pasoa el programa para ver donde no rula.

F.
Todos los días se aprende algo nuevo.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: 16f818 no funciona
« Respuesta #5 en: 01 de Septiembre de 2010, 22:16:53 »
Acabo de descubrir 2 cosas:

1) mi proteus andaba mal, lo reinstale y bueno, ahora si anda
2) por algun extraño motivo en el codigo tengo puesto 1000ms y el micro lo toma como si fueran 20 segundos, deje todo conectado y despues de un rato pude visualizar algo en el display, de todos modos, tarda una vida en inicializarse. El reloj interno esta tanto en la simulacion de proteus, como en el PSI en 4mhz  :?



Volviendo al mundo de los PIC....

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: 16f818 no funciona
« Respuesta #6 en: 02 de Septiembre de 2010, 05:52:00 »
En el(os) simulador(es) software , por ser eso simulador(es), los tiempos no son reales y tardan una barbaridad en ejecutarse.
Todos los días se aprende algo nuevo.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: 16f818 no funciona
« Respuesta #7 en: 02 de Septiembre de 2010, 13:56:41 »
Sisisisi, eso lo entendi, pero en el protoboard es donde muestra la demora, en la simulacion de proteus anda como deberia  :?

probare agregando al codigo Define CLOCK_FREQUENCY = 4
Volviendo al mundo de los PIC....

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: 16f818 no funciona
« Respuesta #8 en: 04 de Septiembre de 2010, 13:51:14 »
Bueno, ya esta, consegui el micro con el que habia simulado todo originalmente (16F876) y utilice un programador prestado, asi que problemas solucionados por ahora, cuando tenga un poco mas de tiempo intentare ver que es lo que fallaba con el otro pic.

Fer_TACA Muchas gracias por al ayuda!!! :D

Ahora te hago otra consulta, capaz me podes dar una mano, tengo el programador JDM, tenes idea que modificaciones hay que hacer para poder meterle el 16F818? ademas del pinout que cambia, los pines no utilizados los conecto todos a GND?
no quiero mandarme un micro al pecho al primer intento jejeje

Saludos y gracias nuevamente!!  :)

Edito:

Ahi leyendo los datasheets creo que encontre la solucion, al menos pude programar el micro y no me dio ningun error, quedaria asi:

        Pin en JDM ----   Pin en micro 28 pines
MCLR      4 ----------------------------1
VSS        5 ---------------------------- 8 y 19 (puenteados, ambos son VSS)
CLOCK    12 --------------------------- 27
DATA      13 --------------------------- 28
VDD       14 --------------------------- 20

Exitos!! :D
« Última modificación: 04 de Septiembre de 2010, 19:56:42 por wolfman77 »
Volviendo al mundo de los PIC....

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: 16f818 no funciona
« Respuesta #9 en: 05 de Septiembre de 2010, 08:13:06 »
Es que no hay nada mejor qie para conocer el micro a utilizar el darle un buen repaso al datasheet correspondiente.



 :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Todos los días se aprende algo nuevo.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: 16f818 no funciona
« Respuesta #10 en: 14 de Septiembre de 2010, 20:20:31 »
Bueno, haber.... o lo mio no son los pic o estoy cometiendo un error MUY basico
arme todo, conecte en un 16F876

Este es el codigo

Código: [Seleccionar]
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 4
TRISA = 1
TRISB = 0
TRISC = %00011100
ADCON1 = 0x0e

Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 5
Define LCD_RWREG = PORTC
Define LCD_RWBIT = 6
Define LCD_EREG = PORTC
Define LCD_EBIT = 7
Define LCD_READ_BUSY_FLAG = 1
LCDinit

Dim a As Word
a = 65535

Lcdinit 3
WaitMs 1000

loop:
Lcdout "¡Estoy contando!”"
Lcdcmdout LcdLine2Home
Lcdout #a
a = a - 1
WaitMs 250
Lcdcmdout LcdClear
Goto loop

Es decir, puerto B los datos
Puerto C 5, 6 y 7 van RS, RW y E respectivamente
pero..... NO ANDA!!!
No puede ser que algo tan basico no me salga, lo simulo en el PSI y anda de 10, en el proteus igual, pero en el protoboard no anda ni para atras  :(
Ese micro tiene algun truco? me lei el datasheet con lo poco que se de ingles y no encontre nada extraño.
Lo unico que se ve en el LCD es la fila de arriba todos cuadraditos, probe entre v0 (pin3 del LCD) con una resistencia a masa y baja un poco la intensidad de lso cuadraditos, pero siguen estando ahi sin mostrar un solo mensaje  :(
el oscilador lo arme con un cristal de 4mhz y dos capacitores de 22pf a masa
Alguien me puede dar una mano en algo tan simple pero que me esta limando la cabeza?

gracias
Volviendo al mundo de los PIC....

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: 16f818 no funciona
« Respuesta #11 en: 14 de Septiembre de 2010, 21:26:04 »
Si no recuerdo mal tienes seleccionado cristal de alta velocidad (HS)
Tienes duplicado el init del display
Muy importante tienes que fijarte que tu micro sea el 16F876 y no el 16F876A

Y para lo demás no veo problema, ya tendría que probarlo en la realidad.

Una forma de ver que el micro esta funcionando correctamente es que le pongas un led parpadeando en un pin para ver que esta vivo tu programa.

Código: Visual Basic
  1. Define CONF_WORD = 0x3f71
  2. 'Define CONF_WORD = 0x3f72
  3. Define CLOCK_FREQUENCY = 4
  4. TRISA = 1
  5. TRISB = 0
  6. TRISC = %00011100
  7. ADCON1 = 0x0e
  8.  
  9. Define LCD_BITS = 8
  10. Define LCD_DREG = PORTB
  11. Define LCD_DBIT = 0
  12. Define LCD_RSREG = PORTC
  13. Define LCD_RSBIT = 5
  14. Define LCD_RWREG = PORTC
  15. Define LCD_RWBIT = 6
  16. Define LCD_EREG = PORTC
  17. Define LCD_EBIT = 7
  18. Define LCD_READ_BUSY_FLAG = 1
  19. Lcdinit 3
  20.  
  21. Dim a As Word
  22. a = 65535
  23.  
  24. 'Lcdinit 3
  25. WaitMs 1  '000
  26.  
  27. loop:
  28.         Lcdout "¡Estoy contando!"
  29.         Lcdcmdout LcdLine2Home
  30.         Lcdout #a
  31.         a = a - 1
  32. WaitMs 2  '50
  33.         Lcdcmdout LcdClear
  34. Goto loop
  35. End
Saludos desde Granada, España.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: 16f818 no funciona
« Respuesta #12 en: 14 de Septiembre de 2010, 21:39:59 »
increiblemente, no tengo un solo led a mano, pero reduje el codigo y lo hice mas simple, y ni asi arranca. me sigue mostrando la linea de arriba con puros cuadros y nada mas

este es el nuevo codigo (cambie los pines de salida para probar si era ese el problema)

Código: [Seleccionar]
Define CLOCK_FREQUENCY = 4
TRISA = %00000000
TRISB = %00000000
TRISC = %00000000
Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 5
Define LCD_EREG = PORTC
Define LCD_EBIT = 7
Define LCD_RWREG = PORTC
Define LCD_RWBIT = 6
Define SIMULATION_WAITMS_VALUE = 1
Lcdinit 0
loop:
Lcdout "prueba de LCD"
WaitMs 1000
Lcdcmdout LcdClear
WaitMs 1000
Goto loop
« Última modificación: 14 de Septiembre de 2010, 21:44:21 por wolfman77 »
Volviendo al mundo de los PIC....

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: 16f818 no funciona
« Respuesta #13 en: 15 de Septiembre de 2010, 09:10:38 »
Te dejo un enlace a un proyecto con el 16F877 y su configuracion es la misma que para el 16F876.
Usa un LCD a 8bit de datos como tu ejemplo, puedes comparar la configuracion con tu montaje.

http://www.freewebs.com/glafebre/miguelito.htm
Saludos desde Granada, España.


 

anything