Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola a todos!!
Tengo la intención de hacer un modulo que muestre por una pantalla un log. Simplemente datos alfanuméricos.
La idea es que en la pantalla me aparezcan por los menos entre 10 y 20 líneas del log. Y ya vería si merece la pena meter scrolling o no, pero de momento eso, una pantalla que permita leer unas cuantas lineas a la vez.
Pues bien, he estado mirando displays y todos los del tipo LCD Led o por fluorescente de vacio (o algo así) son como mucho de 4 líneas alfanuméricas..... ¿no existen más grandes? Y por otro lado he encontrado pantallas LCD con tamaños de unos 128 píxeles en vertical o más, que me podrían valer, pero las he mirado un poco por encima y me parecen bastante más complicadas de programar que los displays alfanuméricos, ya que permiten opciones de dibujo que yo no usaría nunca.
Asi que me gustaría saber que tipo de display me aconsejaríais usar para la aplicación que le quiero dar.
Muchas gracias y un saludo!!
De vuelta a la civilización por unos minutos, no me he podido resistir a contestar algo.
El GNU-GCC de los Atmel (si es que los sigues usando) y de los ARM's SI que cumple con ANSI-C. Incluso puedes elegir entre las dos versiones existentes, y para algunos casos, incluso puedes usar (si hay RAM de sobras) Embedded C++ con objetos. Con algunos añadidos, generalmente tipo #defines que vienen en algún #include habitual (te puedo echal algún cable en el AVR si es el caso, gratuito con el AVRStudio) que definen variables como PORTA que en realidad son direcciones de memoria. Así, hacer algo tan simple como PORTA = 0x01 pone a 1 el bit 0 del registro PORTA. Simple y eficiente.
Por otro lado, aprendí hace tiempo que cuando de trata de experimentar, lo mejor es relegar al micro únicamente las tareas en tiempo real, y pasar los datos 'en bruto' o 'a palo seco' al PC, y tratar dichos datos con este. Yo siempre he usado el C# Express, gratuito y con soporte para puerto serie, generalmente apoyado en mi caso con el ModBus. De esta manera, puedes hacer con los datos lo que te apetezca sin pelearte con el micro, y de una manera mucho más fácil de depurar y tratar.
Una vez obtenidos los resultados deseados, pasarlo a C para el micro es relativamente sencillo.
Bueno, gracias de nuevo.
El micro que uso de momento es el Atmega8, asi que si, sigo con Atmel.
El modulo que tengo intención de desarrollar en C es sencillito; sería el control del LCD, lectura del USART, almacenamiento en memoria (por lo que tengo que ver si me vale con el Atmega8 o tengo que ampliar) y poco más.
El módulo que comento que ya empieza tener síntomas de sobrepeso es otro que de momento se queda en ensamblador, porque la migración a C no me la planteo hasta que no tenga más soltura.
He mirado un poco por encima algún pdf de programación C en AVR (como el compartido por FJ_Sanches) y parece sencillo.... es programar C normal pero con el mapeo de puertos específico del micro y a muy bajo nivel. Pero en todos los esquemas que he visto importan librerías del tipo "io.h" que contienen el mencionado mapeo de puertos que hace que cosas como PORTA = 0x01 tengan sentido, pero que yo no las encuentro por ninguna parte..... siempre queda la opción de tirar de defines y hacerlo uno mismo, pero solo por curiosidad quería preguntar si estas librerias existen ya en algún lugar.... más que nada por no trabajar en valde.
Y otra cosilla, ya por rizar el rizo: soporta TODO C?? Es decir, ¿podría generar un fichero, llenarlo con los datos de log y descargarlo a un PC por puerto serie? O hay ciertas limitaciones?????? Lo digo porque la creación de ficheros depende en cierto modo del SO, al necesitar un nombre (o ruta) del fichero.
Gracias y saludos!!!
Hola:
De vuelta al trabajo, un post cortito de info. Para el WinAVR, basta con añadir:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
#include <stdio.h>
al principio de tu main.c, y con esto basta.
Lo de usar los archivos, no funciona, pero el printf() y scanf() creo que funcionan, si bien yo nunca los usos (manías particulares, ya que prefiero trabajar con interrupciones, buffers y bits en lugar de los sistemas tradicionales, lentos, bloqueantes, consumidores de memoria, y despilfarradores de recursos y tiempo).
Creo que tengo por ahí algo respecto del uso del puerto serie que te puede ser de utilidad, pero no está depurado. Por cierto, te recomiendo que compres un AVRDragon (menos de 80€) para depurar por JTAG y/o DebugWire. Y de paso te sirve de programador.
Para la memoria de almacenamiento, te recomiendo un flash SPI (las hay de hasta 8MBytes), fácil de usar y llena de memoria.
Por cierto, para LCD's de carácteres alfanuméricos, hay librerías estándar listas para ser usadas. Y tengo algo, perdido por ahí, de algunas de las librerias gráficas, incluyendo el T6963 o como se llame, pero tendré que buscar.
Hola!!
Gracias por las librerias, pero me interesaría saber algún sitio donde poder consultar las librerias que existen, con las funciones, estructuras, etc que contienen (no me refiero a las puras de C, si no a las especificas de AVR), más que nada a modo de documentación.
Y volviendo al origen del post, os dejo un par de .pdf con los datasheet de un par de pantallas LCD gráficas monocromo, para que me deis vuestra opinión. Insisto en que la función de la pantalla es mostrar el log de texto, una función puramente de testeo y administración.
El pdf "128240A" hace refenrencia a una pantalla de 128pixels en vertical. Este datasheet contiene algo de información sobre el protocolo de comandos para controlar el display, pines, diagramas, etc.
El pdf "240320FP" hace referencia a una pantalla de 320pixels en vertical. Este datasheet no contiene información sobre el protocolo de comandos para controlarlo, pero como me parece que utiliza el T6930, con conocer el protocolo para comunicarme con ese controlador me valdria, no? El datasheet es bastante escueto, sólo habla de las características electricas.... no sé si existirá un manual más completo.
Y por último, para hacer el circuito de prueba donde irá el display, en el pdf "128240A" sí especifican la funcionalidad de cada uno de los pines, aunque no entiendo los que comprenderían del 21 al 34 (página 22) ni los relativos al backligth, ya que no entiendo cómo se alimenta el tal backligth, con el ánodo, el cátodo y por otra parte el CCFL
Y tampoco comprendo el diagrama de la página 23.... nada, no entiendo nada en absoluto de lo que aparece en ese diagrama....
Asi que si necesito saber algo a la hora de planificar el circuito, por favor, decidmelo!!!
Muchas gracias por vuestra paciencia 😉
Saludos!!!
Hola:
Así, a bote pronto, tres comentarios:
1º Necesito gafas, pues no veo el link a ningún PDF. 😉
2º Generalmente, los displays van en dos PDF: uno del fabricante del módulo, y otro del driver especificado por el fabricante del módulo.
3º AVRStudio -> ayuda -> AVR-GCC lib help, que te redirige a una web donde se puede encontrar algo de información. Para más, AVRFreaks y la página oficial del WinAVR (que no he consultado nunca 😯 ).