Autor Tema: Alguien tiene librerias avanzdas para lcd y usart  (Leído 5160 veces)

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

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Alguien tiene librerias avanzdas para lcd y usart
« en: 02 de Abril de 2009, 21:45:06 »
Saludos! Pues hace poco que he empezado con los atmega, programo en C y uso en WinAvr, y una de las cosas que mas me desanima es el uso de la usart y del lcd.

Para la usart consigo mandar cadenas, en ram y en memoria, mi porblema viene al querer mostar variables como seria "% identificador de tipo de dato", que no sé como puedo hacerlo ni encuentro ninguna o para cambiar de linea y demas, los tipicos: \n, \r...

Y con el lcd, he encontrado para escribir, pero por ejemplo no encuentro como cambiar de linea, hacer uso de "\n","\r"...ni uso de variables y demas.

Por eso, por si aqui hay gente que use los atmel y el winavr  y tiene esas librerias o sabe donde encontrarlas, escribo por si me puede echar una mano. Siempre se pueden hacer, pero lo veo una "perdida de tiempo" si ya existen, porque asi puedo avanzar mas rapido en la programacion.
Saludos desde Córdoba, españa

Desconectado mariano_pic

  • PIC18
  • ****
  • Mensajes: 498
    • Software Electronica Microncontroladores
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #1 en: 03 de Abril de 2009, 02:52:04 »


      Sabes aunque no manejo AVR, la otra ves probe mikroc para AVR y probe a manejar un lcd y todo fue perfecto es muy sencillo con mikroc for avr  :lol:
Necesitas ayuda para tu proyecto electronico?
buscame, tal ves pueda colaborarte.
Blog: http://electronicosembebidos.blogspot.com.co/
mail: electronicosembebidos@gmail.com
Mi grupo de facebook: https://www.facebook.com/groups/ProgramandoPics/

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #2 en: 03 de Abril de 2009, 04:49:18 »
Hola amigo Kain!
Para los Atmel en habla Hispana somos muy pocos en la RED para encontrar Cosas y te recomiendo que busque en Ingles osea configura tu Google que busque en ingles, mira aqui http://www.siwawi.arubi.uni-kl.de/avr_projects/ y aqui el Sr Peter Fleury te explica http://homepage.hispeed.ch/peterfleury/avr-software.html
Sabe estos 2 tipo son de habla aleman y ponen su pagina en ingles y te aconsejo que mire por aqui http://www.avrfreaks.net/ pero debe ser miembro del Foro para ver y bajartes info,lib etc

Saludos



Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #3 en: 03 de Abril de 2009, 06:05:42 »
Muchas gracias por las paginas stk500, jeje ya me di cuenta de que atmel en habla hispana hay mas bien poco. Ya estoy registrado en avrfreak, la mayoria de lo poco que sé lo he aprendido alli, hice una busqueda pero no encontre nada de interés, todo sera buscar mejor y cuando lo encuentre lo pondre por aquí.

La verdad es que los avr los veo mas potentes que los pic's, pero su punto debil es la falta de informacion en castellano y que no sé porqué tiene tan poca pila 3 niveles, de todas formas nunca me ha dado problemas al llamar mas de una funcion supongo que el compilador lo suple por software
Saludos desde Córdoba, españa

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #4 en: 03 de Abril de 2009, 06:35:37 »
Yo uso AVR Bascom y cuando tenga mas tiempo pondre algo de mi proyectos por aqui.

Espero que en AVR Bascom encuentre alguien por aqui que le guste y asi poder hacer cosas  :P

Saludos

Desconectado FuYiVape

  • PIC12
  • **
  • Mensajes: 69
    • Electronica y Sistemas
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #5 en: 03 de Abril de 2009, 19:55:36 »
Para que te funcione bien lo que queres hacer. deberias establecer un protocolo basico para comunicacion
Definir por ejemplo:

{COMIENZO}{LONGITUD TOTAL DEL PAQUETE}{COMANDO}{DATOS}{FINAL}

que seria una cosa asi

COMIENZO = 2 bytes (0xFF;0xFF)
LONGITUD = 1 byte (SUMA de COMANDO + DATOS)
COMANDO = 1 byte (Imprimir en LCD, Modificar una variable, etc)
DATOS = 1 a 16 bytes si es solo para el LCD "Hola Mundo!"
FINAL = 2 bytes

En comando podrias definir por ejemplo:
BORRAR DISPLAY = 0x10
ESCRIBIR EN LINEA 1 = 0x80 (Ya le pasas el comando del display mismo)
ESCRIBIR EN LINEA 2 = 0xC0 (Ya le pasas el comando del display mismo)
ACTUALIZAR VARIABLE X = 0x20
se me ocurre...

Particularmente te recomiendo que uses interrupciones para recibir datos del USART
Esto te asegura que nunca vas a perder datos a la hora de recibirlos y tampoco interferis con otras rutinas
haciendo LOOPS

Para manejar interrupciones tenes que establecer una serie de estados para la recepcion de los datos.
Teniendo en cuenta que se produce una interrupcion por cada byte que te llega
Entonces, tenes que controlar cada byte que te ingresa para armar el paquete

Los estados serian:

COM_LIBRE = No se esta usando o no hay recepcion
COM_COMIENZO = Cunado detectas que el primer byte recibido coincide con el de comienzo de transmision (0xFF)
Y quedas a la espera de que la interrupcion te avise que llego el segundo byte.
Comprobas que coincide con el segundo byte de COMIENZO de paquete (0xFF) y cambias el estado a COM_CONTRUYENDO_PAQUETE
Luego tenedrias que recibir el byte que te va a indicar la LONGITUD del paquete
Entonces, lo tomas y lo guardas en una variable global para luego usarlo en la comprobacion del final de transmicion
Luego tomas el COMANDO
Luegoi los datos
y por ultimo comprobas la finalizacion del paquete
Cuando el paquete finalizo, das por lista la recepcion y procesas el paquete segun sea su destino.
Se entiende?

Para una mejor comprencion de los estados, tenes que hacerte un diagrama de estados
Eso te va a ayudar en el desarrollo.

Te paso un pseudo codigo

Código: [Seleccionar]
INTERRUPCION USART()
Se recibe un byte

Guardo byte en una variable
Segun estado comunicacion:
Estado = COM_LIBRE? {primer byte}
Comienza el armado del paquete
compruebo el byte recibido con el de comienzo de comunicacion (0xFF)
Guardo el byte en el buffer de recpcion (rBuff[indice]) Definido como rBuff[127]
Incremento el indice del buffer
Acutalizo el estado a COM_COMIENZO
Estado = COM_COMIENZO? {Segundo byte}
Compruebo el byte recibido el de comienzo de comunicacion (0xFF)
Guardo el byte en el buffer de recpcion (rBuff[indice])
Incremento el indice del buffer
Acutalizo el estado a COM_CONSTRUYENDO_PAQUETE
Estado = COM_CONSTRUYENDO_PAQUETE? {Tercer byte y mas}
Guardo el byte en el buffer de recpcion (rBuff[indice])
(aca estarias recibiendo la LONGITUD del paquete)
Lo guardas en una variable LongitudPaquete
Incremento el indice del buffer
En estado va a estar mientras recibas el resto de la informacion.
Siempre vas a estar comprobando la cantidad de datos recibidos con el declarado en LONGITUD.
Cuando esto suceda, tenes que cambiar el estado para que en el siguiente byte, compruebes la
finalizacion del paquete
Si cantidad de datos ercibidos = LONGITUD
Actualizo el estado a COM_COMIENZA_FINALIZACION
Estado = COM_COMIENZA_FINALIZACION? {Anteultimo byte}
Guardo el byte en el buffer de recpcion (rBuff[indice])
Compruebo el byte con el primer byte de FINALIZACION (0xFF)
Incremento el indice del buffer
Estado = COM_FINAL
Estado = COM_FINAL? {Ultimo byte}
Guardo el byte en el buffer de recpcion (rBuff[indice])
Estado = COM_PAQUETE_LISTO
         
Si queres, podes disparar la rutina de proceso de paquete desde la misma interrupcion
Pero te recomiendo que en un LOOP en Main, compruebes el estado de la comunicacion
Y cuando encuentres que el estado es COM_PAQUETE_LISTO, llamas a la funcion que lo procesa
Cuando termina la funcion, ajusta el esta a COM_LIBRE para que la rutina de interrupcion vuelva a procesa el siguiente paquete
Fijate que la rutina de interrupcion no procesa el estado COM_PAQUETE_LISTO
Esto es asi para no ensuciar el buffer hasta que no se procese el paquete

Ojala te de una idea de como procesar asincronicamente una transfrencia de datos por USART

Saludos


Desconectado Safareig

  • PIC10
  • *
  • Mensajes: 26
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #6 en: 08 de Abril de 2009, 14:42:05 »
Hola,

Aquí tienes unas librerías que te pueden servir, esta es su web.
Ahí tienes librerías y ejemplos no solo para lcd y usart, verás que son bastante completas y te pueden servir de guía en muchos proyectos.



Un saludo...
« Última modificación: 08 de Abril de 2009, 14:54:39 por Safareig »

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
Re: Alguien tiene librerias avanzdas para lcd y usart
« Respuesta #7 en: 08 de Abril de 2009, 22:48:52 »
Muy buena la pagina, ya me las he bajado, ahora a darles uso.
Saludos desde Córdoba, españa


 

anything