TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PabloFiscella en 18 de Junio de 2004, 09:00:00
-
Hola a todos:
Tenia un programa hecho con un pic 16F877 y ahora estoy usando un 18F458.
En programa no funciona ahora del todo bien.
Por ejemplo el display lo mustra desfasado un carater a la derecha y a veces faltan caracteres y cuando presiono un boton tambien en algunos casos ejecuta la funcion de otro.
Estoy usando ahora un cristal de 10MHz en el proteus y #fuses H4
Supongo que todos los problemas comenzaron con la velocidad nueva del cristal.
Espero puedan ayudarme, muchas gracias.
Pablo
-
hola:
tienes que coger la libreria del lcd.c y renombrarla con otro nombre por ejemplo lcd1.c y esta es la que incluyes en el proyecto pero cambiando todo donde pone delay_cycles por delay_us. esto es debido a que no es lo mismo un ciclo a 4mhz que a 40mhz mientras que el daly_us si.
-
Efectivamente esa es la solución, sin embargo en el Proteus esta configuración con el PLL sigue sin funcionar.
-
jo cada dia que passa entiendo menos desto no deberia ser al contrario 
hola: tienes que coger la libreria del lcd.c y renombrarla con otro nombre por ejemplo lcd1.c y esta es la que incluyes en el proyecto pero cambiando todo donde pone delay_cycles por delay_us. esto es debido a que no es lo mismo un ciclo a 4mhz que a 40mhz mientras que el daly_us si.
o sea que si tengo una lcd compatible com la HD44780 e quiero usar um 16f628A a trabajar con cristal de 4 MHZ solo tengo que cojer la LCD.C que viene en el CCS e cambiar todos delay_cycles por delay_us e ir ajustando este com la lcd que use
correcto ?
para usar la lcd en rb3-rw rs-rb2 enable-rb1
datos de rb4 a rb7
solo tendria que poner esto correcto ? lo demas no se toca nada solo se cambia los delay_cycles (1) ; por delay_us(1); // aqui 1 ay que ir ajustandolo mediante la lcd que se use correcto ?
truct lcd_pin_map { // This structure is overlayed
BOOLEAN unused; // pin b0 no se usa
BOOLEAN enable; // pin b1 enable
BOOLEAN rs // pin b2 rs
BOOLEAN rw // pin b3 r/w
int data : 4; // be pin B0.
-
A 4Mhz no tienes que cambiar nada en el fichero original de CCS lcd.c
Los problemas vienen con los PIC18 a frecuencias de 20Mhz, 40Mhz ... entonces es cuando hay que hacer ese cambio en el fichero lcd.c para usar la LCD
-
El problema comienza cuando utilizas la libreria tal cual esta con micros a velocidad de reloj muy superiores a 4 mhz, para la cual fueron escritos.
Si buscas en los datasheets de los controladores de lcd estos necesitan pulsos de determinado ancho para trabajar correctamente.
Por eso lo que explica Pocher es correctisimo.