Dúvidas com float e memória

Como eu faço para gravar um dado do tipo float em uma memória i2c. Na verdade, meu problema é como quebrar um float de 32bits em bytes para gravar na memória...
Grato
Grato
Fórum sobre desenvolvimento de sistemas embarcados: Hardware e Software, Tecnologias: Eletrônica digital e analógica, Microcontroladoras, Microprocessadores, Sistemas *NIX (Linux, BSD), Software embarcado Baremetal. Sem fins lucrativos.
http://asm51.com.br/phpbb/
David Henrique escreveu:Como eu faço para gravar um dado do tipo float em uma memória i2c. Na verdade, meu problema é como quebrar um float de 32bits em bytes para gravar na memória...
Grato
David Henrique escreveu:Como eu faço para gravar um dado do tipo float em uma memória i2c. Na verdade, meu problema é como quebrar um float de 32bits em bytes para gravar na memória...
Grato
union {
float f;
unsigned char c[4];
} fc;
void salva_E2PROM ( unsigned char dado )
{
}
void main ( void )
{
unsigned char contador = 0;
float num_flut = 3.141516
void *ptr_void;
char *ptr_char;
ptr_void = ( void * ) &num_flut;
ptr_char = ( char * ) ptr_void;
for ( contador = 0; contador < 4; contador++ )
{
salva_E2PROM ( * ( ptr_char + contador ) );
}
}
Marcelo Samsoniuk escreveu:hmm... pq guardar na ordem inversa ?
int eeprom_write(char *p, int size)
{
int i;
for(i=0;i<size;i++)
{
if(eeprom_write_byte(p[i])==-1)
{
break;
}
}
return i;
}
int eeprom_read(char *p, int size)
{
int i;
for(i=0;i<size;i++)
{
if((p[i]=eeprom_read_byte())==-1)
{
break;
}
}
return i;
}
float f;
eeprom_write((char *)&f,sizeof(f));
eeprom_read((char *)&f,sizeof(f));
float f;
int i;
i = open("eeprom:",O_RDWR);
write(i,(char *)&f,sizeof(f));
read(i,(char *)&f,sizeof(f));