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
Moderadores: andre_luis, 51, guest2003, Renie
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));
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante