TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: camigod en 18 de Diciembre de 2009, 17:25:25
-
Hola a todos,
Estoy ensayando con un pequeño Touchscreen y una pantalla grafica de 128x64, hasta el momento todo funciona muy bien pero quisiera no ver el molesto "barrido" cada vez que limpio la pantalla.
Estoy usando un pic 18F4550 a 4mhz y estoy usando ls librerias de PIC C:
#include <HDM64GS12.c>
#include <graphics.c>
Y sin mas preambulos el problema es el siguiente:
La pantalla no muestra nada cuando utilizo glcd_update() despues de funciones como glcd_rect... o glcd_line... por otro lado si no defino FAST_GLCD la pantalla funciona bien.
Alguien tiene idea de que modificaciones hay que hacerle a la libreria para que funcione definiendo FAST_GLCD...
Gracias,
-
Hola, esta usando o creaste alguna función para dibujar, que utilice punteros?. Yo tenia el mismo problema justamente con una funcion que utilizaba unos punteros para graficar, al estar definidos como int, no funcionaba, tuve que definirlos como int16 y se soluciono el problema.
Saludos.
Alejandro.
-
Hola Alejandro, gracias por la respuesta, pero no, estoy usando solo las funciones definidas en las librerias que mencione, si las utilizo sin FAST_GLCD todo funciona bien, pero al definirlo y utilizar la funcion que mencionan en la libreria (glcd_update) la pantalla muere... solo funcionan unas cuantas funciones.
Gracias
-
Tengo el mismo problema. Cuando no uso el FAST GLCD me funciona bien. Pero cuando lo pongo en el Proteus me sale mal graficada la pantalla y si lo pruebo en el PIC no me sale nada.
No tengo definidos ningun puntero.
Espero que alguien nos pueda ayudar al respecto
-
Subí las partes de código que interesa, sino es muy difícil detectar el problema. Telequinesis, por ahora nada :mrgreen:
-
Jajajaja. Es lo unico que te falta Suky. Ser telequinetico
El programa es muy largo. Pero en este pedazo de programa ya no me anda, asi que sirve de ejemplo. SI yo comento #define FAST_GLCD y glcd_update() el programa me imprime en la pantalla lo que quiero. Y cuando dejo de comentarlas no me escribe nada.
Cualquier ayuda se los voy a agradecer, ya he visto el foro de arriba abajo y no encuentro solución.
#include <18f4550.h>
#device adc=10
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN
#use delay(clock=48000000)
#define FAST_GLCD
#include <HDM64GS12.c>
#include <GRAPHICS.c>
#ifndef GLCD_WIDTH
#define GLCD_WIDTH 128
#endif
////////////////////////////////////////////////////////////////
// Definir Variables Globales
////////////////////////////////////////////////////////////////
char Logo[] = "todopic";
char Tiempo[] = "Tiempo:";
char Text_Modo[] = "RES";
char Nivel[] = "Nivel";
////////////////////////////////////////////////////////////////
// Definir Prototipo de Funciones
////////////////////////////////////////////////////////////////
void imprime_formato();
void main(){
disable_interrupts(global);
disable_interrupts(int_timer1);
disable_interrupts(int_rda);
disable_interrupts(int_ext);
disable_interrupts(int_ext1);
disable_interrupts(int_ext2);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_psp(PSP_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
port_b_pullups(FALSE);
// Definir Varibles
SET_TRIS_B(0x00);
glcd_init(ON);
while(true){
imprime_formato();
delay_ms(20);
glcd_fillScreen(OFF);
glcd_update();
}//while
}// main
void imprime_formato(){
glcd_rect(0, 0, 127, 63, NO, ON);
glcd_rect(0, 0, 63, 15, NO, ON);
glcd_text57(5,4,Logo,1,1);
glcd_text57(90,4,Text_Modo,1,1);
glcd_text57(5,24,Nivel,1,1);
glcd_rect(4, 32, 39, 40, NO, ON);
glcd_text57(5,48,Tiempo,1,1);
}
-
segun veo, escribes uan serie de rectas y texto, luego borras la pantalla (glcd_fillScreen(OFF);) y luego lo actualizas?
deberia ser, borras la pantalla, escribes las rectas y texto, y luego actualizas.
-
Exactamente, el llamado a glcd_update() debe estar al final de imprime_formato(), de esa manera se dibujan las rectas y textos. Además el glcd_fillScreen(OFF) lo colocaría al inicio del imprime_formato() ;-)
Saludos!
-
SON UNOS GRANDES!!!! Problema solucionado!!!