Página 1 de 1

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

MensagemEnviado: 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).

MensagemEnviado: 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

MensagemEnviado: 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.