TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PabloFiscella en 11 de Junio de 2004, 13:02:00
-
hola a todos:
Estoy tratando de simular con el proteus un programa que muestra un dato en un lcd.
Con el pic16f877 funciona perfecto pero cuando lo pruebo con el 18f458 no muestra nada en la pantalla.
No se si es un problema de programacion o del proteus.
Alguien me puede dar una mano.
Cuelgo el codigo por si sirve de algo.
Saludos y gracias.
Pablo
#include <18F458.h>
#use delay(clock=4000000)
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#include <lcd2.c>
void main(void) {
lcd_init();
for(;
{
lcd_gotoxy(1,1);
printf(lcd_putc,"asdasdasd"
;
}
}
-
Tienes que hacer en lcd2.c algunos cambios.
Para un 452 serían estos:
#bit lcd_enable = 0xF80.2
#bit lcd_rw = 0xF80.1
#bit lcd_rs = 0xF80.0
#byte lcd_a = 0xF80
#byte lcd_b = 0xF81
Comprueba si las direcciones para un 458 son las mismas.
Un saludo
-
Tambien mira el cuarzo que tengas y configurar correctamente el Osc.
para un #use delay(clock=4000000) le corresponde un cristal de 10Mhz y #fuses H4,
para un #use delay(clock=2000000) le corresponde un cristal de 20Mhz y #fuses HS,
suerte.
-
O sea que lo unico que mantiene compatible al 877 es el encapsulado y patillas, el resto cambia por completo, no es asi??
Hay que aplicar RTFM, je..je..
-
Marcos , que es aplicar RTFM ?
No se a que te refieres .
La serie 18 es compatible con los 16 en muchas cosas , pero hay que hechar mano de los data .
-
Je..Je..

En ingles:
Read The Fucking Manual....
-
Asi es MARCOS, RTFM, bueno la linea PIC18 es simetrica en el pinout, pero no internamente, PROTEUS 6.2 tiene algunos bugs, asi que cuidado pues pueden terminar en la locura, generalmente CCS compila cualquier codigo y es transparente al usuario una cantidad enorme de modificaciones que hay que realizar para en un programa hecho para los pic de 12 o 14 bits funcione en estos que son de 16 bits, por lo que les recomiendo mirar el manual antes de migrar o van a perder un monton de tiempo que es mejor emplearlo estudiando esta maravillosa linea, que no es nada mas que mas memoria.
-Pablo, tu ejemplo no funciona porque no estas teniendo en cuenta
los fuses, el WDT no funciona en proteus 6.2 si lo seteas como NO WDT, ademas este tiene postscaler, ponelo en 128 y agrega restart_wdt; en tu programa para resetearlo, no funcionara de otra manera.
saludos
ARIEL
-
Muchas gracias por las respuestas.
Ya lo estoy poniendo en practica y luego les comento.
Tienen idea de donde puedo sacar info de estos pic.
Saludos.
Pablo
-
Hola PABLO, podes bajar el datasheet de los pic18 desde www.microchip.com, fiajte tambien lo que te dice pocher con respecto al driver del LCD, si lo tenes como viene original el de CCS no tenes que tocar nada pues cuando seleccionas que compile PIC18 solo incluye las direcciones correspondientes de los puetos fijate la cabecera del driver
#if defined(__PCH__)
#if defined use_portb_lcd
#byte lcd = 0xF81
#else
#byte lcd = 0xF83
#endif
#else
#if defined use_portb_lcd
#byte lcd = 6 // on to port B (at address 6)
#else
#byte lcd = 8 // on to port D (at address 8)
#endif
#endif
#if defined use_portb_lcd
#define set_tris_lcd(x) set_tris_b(x)
#else
#define set_tris_lcd(x) set_tris_d(x)
#endif
en donde dice #if defined(__PCH__), es para los 18
fijate la diferencia con los pic16 mas abajo,
espero que te sirva
saludos
ARIEL
-
Acabo de cambiar las direcciones del LCD que como uso el pueto E para controlar los datos puse
#bit lcd_enable = 0xF84.2
#bit lcd_rw = 0xF84.1
#bit lcd_rs = 0xF84.0
El LCD funciona perfecto pero no asi el RTCC puse los fuses HS y H4 con sus cristales pero el programa mustra mal los carteles en el display.
Tienen alguna idea de que puede ser
Mil gracias como siempre a todos.
Saludos.
Pablo
-
Pablo, si pones H4 el cristal no puede ser mayor a 10 Mhz, ademas tenes que pensar que si el RTCC se esta incrementando con el clk interno la frecuencia si el cristal es de 10 MHz es la misma usando H4 pues la de reloj seria 40 MHZ, lo del display es porque el driver original de CCS tiene retardos incluidos que dependen de la velocidad de reloj como es la funcion delay_clycles(1), esto a 4 Mhz vale un retardo de 1 microsegundo, pero no es lo mismo en un PIC18 a 40 MHz ( es 250 ns esta a la raya con lo especificado por el fabricante del micro del siplay ), com presumo que lo estas usando, yo reemplace esto por delay_us(1) y ya no debo tener en cuenta mas esto.
saludos
Ariel / Pikman
-
La verdad por mi desconocimiento total en la electronica estoy totalmente perdido.
Hasta ahora con los otros pics la manejaba pero ahora se me complico bastante.
Probe muchas convinaciones de cristal y por ejemplo con H4 y un cristal de 10MHz entra al RTCC cada 45 segundos y antes entraba 15 veces por segundo.
Estoy perdidicimo alguien que tenga paciencia me puede ayudar, supongo que todo pasa por la frecuencia del cristal.
Con los otros pics y con 4MHz funcionaba todo perfecto pero lamentablemente no me entra el codigo.
Saludos.
Pablo