Como gravar uma variável Float na memória EEPROM? PIC 18F452

Enviado:
11 Jan 2007 02:30
por Alex_Marques
Boa Noite, amigos.
Gostaria que vocês me ajudassem. Como é que eu faço para gravar uma variável do tipo Float na memória EEPROM do PIC.
Obs.: Estou utilizando a linguagem de programação C (compilador CCS).

Enviado:
11 Jan 2007 08:15
por Maia
Eu uso o PICC da Hi-Tech. Nele eu faço assim:
Escrever a variável ra no endereço 4
pByte = ( unsigned char * )&ra;
nByte = sizeof( ra );
while( nByte > 0 ){
nByte--;
EEPROM_WRITE(nByte + 4, *pByte++ );
}
Ler a variável
pByte = ( unsigned char * )&ra;
nByte = sizeof( ra );
while( nByte > 0 ){
nByte--;
*pByte++ = EEPROM_READ( nByte + 4 );
}
Vc tem que verificar o tamanho do float para saber quantos bytes da EEPROM sua variável vai ocupar.
Abraços,
Maia

Enviado:
13 Jan 2007 20:08
por microeletronica
Ola Amigo, para o C18, posso ajudar:
- Código: Selecionar todos
void Escrever_EEPROM(unsigned int address, unsigned char data)
{
unsigned char EEPROMGIE_Temp;
EEPROMGIE_Temp = INTCONbits.GIE;
EEADR = address;
EEDATA = data;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;
INTCONbits.GIE = 0;
EECON2 = 0x55;
EECON2 = 0xaa;
EECON1bits.WR = 1;
INTCONbits.GIE = EEPROMGIE_Temp;
while (!PIR2bits.EEIF);
PIR2bits.EEIF = 0;
EECON1bits.WREN = 0;
}
void Escrever_Unsigned_Float_EEPROM(unsigned int endereco, unsigned float dado)
{
unsigned int indice;
for (indice = 0; indice < 4; indice++)
Write_EEPROM(endereco + indice, *(((unsigned char*)(&dado))+indice));
}
conforme o datasheet.