TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: scientist en 30 de Enero de 2009, 16:56:26

Título: pequeño problema con conversion de datos eeprom
Publicado por: scientist en 30 de Enero de 2009, 16:56:26
Hola, siento molestar, pero es qe tengo una pequeña pregunta, lo que pasa es que he barajeado varias maneras, pero no se si hay maneras mas faciles, lo que pasa es que guardo un valor en la eeprom, especificamente temperatura, pero lo guardo en ascii, y ese valor lo quiero comparar con un valor que me da un canal adc, un tipo entero, un sensor de temperatura, lo que no se es como, convertir ese valor ascii de temperatura a un tipo entero, supongamos que tengo guardado 31 grados, en mi memoria tendria en la direccion 0 de la eeprom 30 y en la 1 tendria 31, por lo del codigo ascci, como hago para guardarlo a un tipo entero? 31 para que yo pueda compararlo con mi canal adc, espero no estar abusando, saludos
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: migsantiago en 30 de Enero de 2009, 17:10:23
Puedes guardar el valor referencia en binario en resolución de 8 bits, leerlo de la eeprom, pasarlo a entero en grados y compararlo con tu medición adc.
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: scientist en 30 de Enero de 2009, 18:48:39
hay alguna funcion especial para hacer esto? o me tengo que crear una funcion?
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: migsantiago en 30 de Enero de 2009, 19:39:55
La función de siempre...

WRITE_EEPROM()
 
Syntax:  write_eeprom (address, value)
 
Parameters:  address is a (8 bit or 16 bit depending on the part) int, the
range is device dependent, value is an 8 bit int
 
Returns:  undefined

...donde value es el valor de 8 bits equivalente a 31°C.

Debes convertir de grados a bits utilizando la conversión que usarías para pasar de bits a °C en una lectura adc, pero al revés.
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: scientist en 30 de Enero de 2009, 22:51:12
hola, lo que pasa es que yo recibo una cadena de caracteres desde la pc, esa cadena la guardo en la eeprom directamente, paro no perder ningun byte en algun proceso de conversion, es por eso que despues que guardo los valores en la eeprom, hago la lectura para saber que temperatura eligieron, y de ahi obtengo la temperatura limite, esto lo hago por usb, pero cuando quiero leer la temperatura la tengo escrita en ascii , es por esto que necesito una conversion, mas o menos lo que hice que hacer un set bit, y despues hice un corrimiento de bits a la izquierda, y ya despues una or entre el msb y lsb, pero no se si sea la mas optima posible, saludos
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: migsantiago en 30 de Enero de 2009, 23:05:06
Ah ya te entendí.

Puedes extraer char por char de la eeprom y guardarlo en un String (arreglo de chars con un char 0x00 al final). Luego a ese arreglo le pasas la función atoi.

int entero;
entero=atoi(cadena);

Y entero ya valdrá lo que traía tu cadena.

Sobre tu corrimiento de bits, no entiendo bien cómo lo haces  :z)
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: scientist en 31 de Enero de 2009, 03:01:33
jejeje,fue un arreglo que no funciono, me salia puro FF, ahora lo intentare, con la forma que me dices, saludos
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: scientist en 31 de Enero de 2009, 04:57:40
excelente, gracias migsantiago, me ha funcionado de lujo esa funcion, saludos  :-/ :-/ :-/ :-/ :-/ :-/
Título: Re: pequeño problema con conversion de datos eeprom
Publicado por: migsantiago en 31 de Enero de 2009, 13:30:25
Qué bien.  :mrgreen: