Bueno muchachos, pues al fin funciona, ni Killer,ni remi04, ni mucho menos yo tenia razon, Duende Azul, tenias razon.
Voy a tratar de explicar lo mejor que pueda
Cuando Duende hizo el comentario de tener que borrar el caracter anterior antes de escribir el que queria (que claramente se dibujaba la silueta, me puse a observar con detenimiento justo el momento cuando dibujaba, y aunque era muy dificil, se notaba que ponia algo antes, parpadeaba.
entonces, pues fui al lugar que nunca sospeche, el codigo del maestro, solo pondre el main() para simplificar, este es mi codigo de prueba:
void main(void)
{
init_device();
delay_ms(1000);
i2c_start(i2c_maestro);
i2c_write(i2c_maestro,0x10);
i2c_write(i2c_maestro,25);
i2c_stop();
while(true)
{
}
}
Ok, como se ve, envio la direccion del esclavo, y despues el dato, como se haria normalmente con cualquier dispositivo I2C, o al menos asi lo hago yo, con lo que yo no contaba, era que, el dato de la direccion del esclavo, tambien lo tomaba como un valor valido a procesar, yo pense que lo descartaba al momento de coincidir con la direccion del esclavo, y era el siguiente dato (mi amado 25) el que tomaria, pues no, el puñetero 0x10, se metia, que en decimal es un 16, y ese señores, es el que se colaba detras del 25.
He echo la modificacion similar a como la planteo Duende Azul, quedando asi:
void main()
{
//Configuracion y Plantilla base del GLCD
configuracion();
plantilla_base();
//Ciclo infinito
while(true)
{
if(i2c_datos==1)
{
i2c_datos=0;
sprintf(cadena_datos,"%u",dato);
glcd_text57(10,10,cadena_datos,4,0);
sprintf(cadena_datos,"%u",dato);
glcd_text57(10,10,cadena_datos,4,1);
glcd_update();
}
}
}
y ahora si, funciona, me muestra el bellisimo 25, integro, nitido, y sin pixeles añadidos, ese o cualquier numero, o letra
creo que tal ves lo correcto seria, antes de escribir el dato final, borar el area a trabajar, no toda la pantalla como bien lo apuntaba Duende Azul, solo un recuadro digamos, y despues de ello, ahora si, escribir el dato final
mi teoria es que, como el PIC no es un componente puramente I2C, tiene detalles como este, de no excluir la direccion propia y tomarlo como un dato, o al menos no lo hace del modo como lo haria un componente puramente I2C, llamese un DS1307, por ejemplo, o similar.
Si existe alguna manera, o funcion, que pueda implementar y mejorar esto, se los agradecere mucho, asi como doy gracias al buen Killer, a remi04, y por su puesto a Duende Azul por la atencion y ayuda prestada, sin su ayuda no se hubiera logrado, como siempre, orgulloso de pertenecer a una comunidad tan colaboradora como lo es TodoPIC.
Si existe alguna duda en la que pueda ayudar del tema, no duden en preguntarme
Saludos compañeros