Autor Tema: problemas para mostrar algunos mensajes en pantalla LCD  (Leído 7333 veces)

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

Desconectado guille1234

  • PIC10
  • *
  • Mensajes: 33
problemas para mostrar algunos mensajes en pantalla LCD
« en: 22 de Marzo de 2010, 21:03:52 »
Hola, hice un programa que adjunto que maneja motores paso a paso bipolares con su correspondiente integrado l293 que son dos puentes H, El programa cuando empieza visualiza en el LCD de 2x16 el mensaje "paso a paso, pulse: der o izq", cuando pulso uno de los botones que lo hice por interrupción de rb4 a rb7, muestra si aprieto el boton correspondiente a rb4 hace la secuencia para que el motor gire a la izquierda y muestre en pantalla "giro a la izquierda", analogamente con el boton a la derecha.
Mi problema es que al soltar el botón no puedo hacer que se muestre en pantalla el mensaje del programa principal: "paso a paso, pulse: der o izq", cómo hago para poder volver al mensaje de espera al no apretar un botón?

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #1 en: 23 de Marzo de 2010, 06:51:24 »
En cuanto tenga un ratito te lo chequeo

fermin
Todos los días se aprende algo nuevo.

Desconectado guille1234

  • PIC10
  • *
  • Mensajes: 33
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #2 en: 23 de Marzo de 2010, 15:02:52 »
Gracias Fer por dedicarle tiempo al foro!

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #3 en: 23 de Marzo de 2010, 18:18:47 »
Estoy echando un pequeño vistazo al programa y aparentemente no veo "en concepto" nada anormal pero:

- ¿Para que vas a utilizar el puero A?. Si no lo vas a usar lo puedes eliminar. Se elimina codigo y el programa aprte de menos errores seria mas eficiente.
- Por otro lado veo que utilizas 2 pines de las lineas b 4 a 7 como entrada y otras 2 como salida para el control del display. Si vas a utilizar la interupcion por el cambio del puerto B pines 4..a 7 yo configuraria todo el como entrada y los pines que utilizas para el LCD usar los del puerto A.
- Date cuenta que en la rutina de cambio de estadas le asignas al puerto B nible alto(pines 4 a 7) = 0 esto son salidas. ¿El pin 4 y 5 no eran entradas?. esto te puede estar dando problemas, con eso le estas diciendo seguramente que se quede siempre en la ultima pantalla, entrando y saliendo rapidamnete sin salir de la interrupcion y no leyendo la pantalla de bienvenida.

Prueba esto y nos comentas como te fue.

Fermin

edito:
He tenido un dia de lo mas cargado en el curro y no he visto bien que el puerto A es para mandar los motores, solo vi la "B" de binario. Perdon
Como no tendras pines libres al usar un 16F84 puedes dejar el pin E siempre activado conectandolo directamente a una tensión y para el RS puedes utilizar el que te queda libre del puerto A.
« Última modificación: 23 de Marzo de 2010, 18:32:29 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #4 en: 23 de Marzo de 2010, 18:36:20 »
Para no liar mas la respuesta anterior.
Si ves que necesitas mas pines te puedes pasar al 16F88 o el 16F628 y si configuras el oscilador como interno tienes 4 pines mas libres.

fermin
Lo estas simulando ¿Puedes añadir el fichero de Proteus si es el que estás utilizando?
« Última modificación: 23 de Marzo de 2010, 18:52:03 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado guille1234

  • PIC10
  • *
  • Mensajes: 33
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #5 en: 23 de Marzo de 2010, 19:04:14 »
como decis, usé al limite los pines que me daba el 16f84, porque tenía uno de esos a mano, por eso use el b6 y b7 para el display (pensas que ahí debe estar el problema, que confundo al programa con b6 y b7 que son salidas o entradas?), o sea estructuralmente estoy haciendo bien las interrupciones, fuera de los pines que usé?
por otro lado cuando en la interrupción digo "fin de interrupción" en qué parte del programa principal continúa, después de don dice GIE=activado?

No lo estoy simulando, lo estoy haciendo con hardware, ya que el proteus no me respondía correctamente.


Saludos

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #6 en: 23 de Marzo de 2010, 19:11:12 »
Pienso que hay puede estar e problema y ya te digo en principio estaria bien palnteado.
Al salir de la interrupcion, si miras el asm generado por niple, veras que borra la gandera de la interrupcion y a contiuación regresaria al nop.

Para probar puedes añadir un nuevo bloque borrando toda la pantalla antes de visualizar el mensaje de bienvenida. Aunque no seria lo mas correcto al menos probarias si llega a ese punto.

mañana si tengo un poquito de tiempo creo un circuito con proteus y lo pruebo, mientras si tu puedes ir avanzando con lo que te indicado antes mejor.

fermin
Todos los días se aprende algo nuevo.

Desconectado guille1234

  • PIC10
  • *
  • Mensajes: 33
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #7 en: 23 de Marzo de 2010, 19:29:33 »
en uno de mis intentos le agregué una pantalla en blanco antes, y lo que me hacía era titilar la pantalla diciendo "giro a la izquiera" o "giro a la derecha", pero nunca volvía a la pantalla principal.
Acuerdate si lo haces en proteus de la conexion del motor bipolar que te adjunto en una foto, yo lo hice y no lo pude hacer girar, y en la pantalla no aparecia nada, ya que en el proteus nunca pude simular el lcd con 4 pines

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #8 en: 24 de Marzo de 2010, 14:55:29 »
Hola amigo Guille:

Mira he estado haciendo pruebas y creo poder decirte donde está el error.

Para configurar el LCD he cambiado los datos al nible alto y la señal de E al pin b3 y la rs al pin b2. Cómo entradas he utilizado b0 y b1. Evidentemente esto implica no utilizar las interrupciones por cambio de estado de las líneas b4 a b7.

Parece ser que solo funciona bien con esta configuración

He modificado el programa eliminando la rutina de interrupción y he simulado en Proteos. Para no complicarme mucho no he puesto el(os) motor(es) paso a paso solamente unas sondas y poder ver como cambian las salidas.

El programa funciona bien,  adjunto fichero NIPLE (version5.5); Proteos(v7.6SP0); el ASM generado por Niple y el correspondiente hex.

También decirte que cuando se sale de las rutinas de izquierda o derecha al volver a la pantalla inicial, siempre se quedan activas unas salidas y no se si eso será bueno y quieras realizar eso. Quizás deberías dejarlas a 0. Además si utilizas este método deberías de emplear un sistema antirebotes para los interruptores.

Saludos cordiales,

Fermín
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #9 en: 24 de Marzo de 2010, 15:07:11 »
Hola de nuevo, mira he seguido avanzando he colocado un motor paso a paso con la configuracion mas o menos como la has puesto tu y me parece que si funciona y gira perfectamente.
Adjunto el fichero de Proteus

Fermin
Todos los días se aprende algo nuevo.

Desconectado guille1234

  • PIC10
  • *
  • Mensajes: 33
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #10 en: 24 de Marzo de 2010, 18:49:58 »
entonces el problema debe estar en lo que observaste de los rb6 rb7 que los usé como salidas, te cuento que modifiqué el programa original en las interrupciones y logré ir paso a paso con el motor y no como el programa que te mandé antes que iba de cuatro en cuatro paso, si lo querés te lo subo

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #11 en: 25 de Marzo de 2010, 14:40:31 »
Pues si creo que el problema es que si se configura el puerto B para activar las interrupciones por cambio de estado en las lineas B4 a B7 todas ellas quedan como entrada y no se ueden utilizar como salidas.

Respecto a si subes el programa, por mi no es necesario, pero seria de agradecer si lo estimas oportuno, pues puede ayudar a otros colegas para solucionar problemas similares.

Fermin
Todos los días se aprende algo nuevo.

Desconectado guille1234

  • PIC10
  • *
  • Mensajes: 33
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #12 en: 25 de Marzo de 2010, 17:20:21 »
Gracias Fer por ahora lo voy  a solucionar el problema del mensaje de la siguiente forma, cuando se dé la interrupción luego de decir giro a la izquierda o derecha, una vez que haga el moviemiento que llame al mensaje principal y luego fin de interrupción.
Cuando termine de mejorar el programa lo subo, ahora lo que quiero hacer es: cuando uno deja apretado el pulsador derecha o izquierda que haga avanzar el motor más rápido, supongo que lo que voy a hacer es grabar en un bit de un registro cuando pulso el botón, y que seguidamente se vuelva a fijar si ese bit  es =1, de serlo que haga la secuencia correspondiente más rápido
Nos vemos

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #13 en: 25 de Marzo de 2010, 17:51:02 »
Recuerda que me imagino que al slir de cada una de las rutinas izquierda o derecha deberias de desactivar las salidas para el motor en caso contrario se quedarian siempre activados aunque no hubiese pulsado ninguna de las 2 entradas.

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

Desconectado kilopondio

  • PIC12
  • **
  • Mensajes: 89
Re: problemas para mostrar algunos mensajes en pantalla LCD
« Respuesta #14 en: 26 de Marzo de 2010, 08:53:17 »
Hola Fer!,mira yo no uso interrupciones y he usado la misma configuracion que hiciste vos y sin embargo no me funciona mi LCD en Proteus.Todavia no lo arme en el protoboard pero es muy seguro que funcione alli.


Saludos



Hola amigo Guille:

Mira he estado haciendo pruebas y creo poder decirte donde está el error.

Para configurar el LCD he cambiado los datos al nible alto y la señal de E al pin b3 y la rs al pin b2. Cómo entradas he utilizado b0 y b1. Evidentemente esto implica no utilizar las interrupciones por cambio de estado de las líneas b4 a b7.

Parece ser que solo funciona bien con esta configuración

He modificado el programa eliminando la rutina de interrupción y he simulado en Proteos. Para no complicarme mucho no he puesto el(os) motor(es) paso a paso solamente unas sondas y poder ver como cambian las salidas.

El programa funciona bien,  adjunto fichero NIPLE (version5.5); Proteos(v7.6SP0); el ASM generado por Niple y el correspondiente hex.

También decirte que cuando se sale de las rutinas de izquierda o derecha al volver a la pantalla inicial, siempre se quedan activas unas salidas y no se si eso será bueno y quieras realizar eso. Quizás deberías dejarlas a 0. Además si utilizas este método deberías de emplear un sistema antirebotes para los interruptores.

Saludos cordiales,

Fermín