TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: lopb en 24 de Noviembre de 2010, 11:36:44
-
Hola, estoy usando el programa de ejemplo EX_INTEE.C que viene con ccs.
Ahora estoy tratando de grabar un dato hexadecimal sobre una direccion de memoria.
La grabacion se realiza pero el dato es incorrecto.
Es algo asi lo que estoy haciendo, no veo otra forma de convertir decimal a hexa... no se si hay una funcion para eso.
char valor[10];
int ivalue;
ivalue = 252;
sprintf(valor, "%X", ivalue);
write_eeprom( 5, valor );
El valor que me graba es 28 en vez de 252
any help?
-
Si los valores son menores a 255, no tienes que convertir nada,
//char valor[10];
int8 ivalue;// 0 - 255
ivalue = 252;
///sprintf(valor, "%X", ivalue); sobra no sirve de nada aqui , solo para presentar en pantalla
/// Dec Hex Bin
write_eeprom( 5, valor );/// escribe valor de la variable en exadecimal en la eeprom o sea 252=FC=11111100
Si son mayores, tendrás que guardar los bytes por separado.
-
Si los valores son menores a 255, no tienes que convertir nada,
//char valor[10];
int8 ivalue;// 0 - 255
ivalue = 252;
///sprintf(valor, "%X", ivalue); sobra no sirve de nada aqui , solo para presentar en pantalla
/// Dec Hex Bin
write_eeprom( 5, valor );/// escribe valor de la variable en exadecimal en la eeprom o sea 252=FC=11111100
Si son mayores, tendrás que guardar los bytes por separado.
ah, toma el dato y lo pasa automaticamente no?
no sabia eso.
Y para valores mas grandes, tengo que grabar en multiples direcciones no?
muchas gracias por tu ayuda
-
Recuerda ,los datos solo tienen distinción entre hexadecimal, binario, octal, decimal .. etc, para su representación, en las variables siempre balen lo mismo, no cambia, para guardar un numero mayor por ejemplo un int 16, tendrás que guardar los dos pares de Byte, int32 4 pares, y así con cada uno de los valores, ten en cuenta, si lo lees desde un pc después, el orden en que has de guardar los Bytes, pues cada lenguaje de programación lo hace de un modo, por el Byte mas significativo delante o detrás.
-
Para variables diferentes a las de 8 bits (ej. int1, int16, int32 o float), puedes usar las librerías que vienen con el CCS: internal_eeprom.c o external_eeprom.c
Saludos!
-
Barbaro, muchas gracias por las aclaraciones.
Estoy probando eso justamente, tengo problemas para reescribir la eeprom.
pero abri otro tema respecto a eso.
saludos :D