TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Tidh en 20 de Octubre de 2005, 01:47:00

Título: Problema del codigo, pic o mio??
Publicado por: Tidh en 20 de Octubre de 2005, 01:47:00
HOLA a TODOS!!!

tengo un problemilla con este codigo, es un codigo de vszener modificado para poder utilizar  mi 16f877a, este programa escribe en la eeprom interna del pic unos mensajes que despues son reproducidos por lcd.

el problema viene cuando graba los datos, no me los graba....
por eso cuando tiene que leer los mensajes previamente guardados lo unico que lee son "FFFFFFFFF" , si alguien me puede ayudar, ....
yo le e dado muchas vueltas ya


Muxas gracias!!
------------------------------------------------------------------------

#include <16f877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay (clock=8000000)

#byte portd=0x08
#define use_portd_lcd TRUE
#include "lcd.c"

{
char LAST_VOLUME=0,volume; //variables de direccion escritura eeprom y mensaje
char mensaje1[]="VsZeNeR"05"; //mensajes...
char mensaje2[]="HOLA";
char mensaje3[]="FORO";
char mensaje4[]="TODOPIC!"; //a escribir en eeprom interna y mostrar en lcd

lcd_init(); //inicializa lcd

write_eeprom(LAST_VOLUME,mensaje1); //escritura de los mensajes...
LAST_VOLUME++;
write_eeprom(LAST_VOLUME,mensaje2);
LAST_VOLUME++;
write_eeprom(LAST_VOLUME,mensaje3);
LAST_VOLUME++;
write_eeprom(LAST_VOLUME,mensaje4); //...en la eeprom interna(0 hasta la 3)

for( ; ; ){
for(LAST_VOLUME=0;LAST_VOLUME<4;LAST_VOLUME++){ //bucle que recorre las posiciones de eeprom
volume = read_EEPROM (LAST_VOLUME); //almacena mensaje de la direccion eeprom
printf(lcd_putc,"%s",volume) ; //muestra mensaje por pantalla lcd
delay_ms(500);
lcd_putc("f" ); //borra pantalla lcd
}
}
}


-----------------------------------------------------------------------------------------------------
Título: RE: Problema del codigo, pic o mio??
Publicado por: manusilcar en 20 de Octubre de 2005, 06:15:00
Hola, te cuento lo que yo veo... Divertido

Con la función write_eeprom (address, value), el parametro address -- direccion-- cuenta la direccion en bytes, así tienes un problema en el direccionamiento de los mensajes, pues según veo se solapan unos encima de otros, con la variable LAST_VOLUME haces que aumente de uno en uno  y en cambio el mensaje al ser cadenas de caracteres, obviamente, ocupan más de un BYTE...Sonrisa GiganteSonrisa GiganteSonrisa Gigante

En fin, creo que debes de corregir el direccionamiento de la EEPROM según la longitud de los mensajes, para que no caigan unos encima de otros...

Ya nos contarás... SUERTE...
Título: RE: Problema del codigo, pic o mio??
Publicado por: vszener en 20 de Octubre de 2005, 07:39:00
Buenas!!! donde no te funciona, en la vida real o en PROTEUS???Giño
Título: RE: Problema del codigo, pic o mio??
Publicado por: Tidh en 20 de Octubre de 2005, 11:33:00
hola!!

manusilcar voy a probar lo que tu me dices, porque me parece que ese es el problema,   vszener el codigo que estoy utilizando lo estoy usando con un pic de verdad,  porque proteus no es que me haya dado muy buenos resultados.

saludos y gracias
Título: RE: Problema del codigo, pic o mio??
Publicado por: vszener en 20 de Octubre de 2005, 14:51:00
En PROTEUS funciona bien, prueba a ver lo que te dice el amigo haber si funciona...haber si tengo tiempo y lo pruebo yo aparte!Suerte!!!Giño
Título: RE: Problema del codigo, pic o mio??
Publicado por: Tidh en 14 de Noviembre de 2005, 03:21:00
hola a todos

ya e corregido el codigo haber si saco un poco de tiempo y lo cuelgo,
el problema era que los datos se sobreescribian al no poner de que tamaño eran..

saludos!!