PIC18 EEPROM no se escribe

0

Estoy trabajando en un proyecto usando un PIC18F26K20. Necesito almacenar varios valores en la EEPROM, pero no almacena ningún dato, todo lo que he recuperado es 0xff.

Aquí está el código que estoy usando:

 unsigned char ReadEEPROM(unsigned char address){
     EECON1=0;                   //ensure CFGS=0 and EEPGD=0
     EEADR = address;
     EECON1bits.RD = 1;
     return(EEDATA);
 }
void WriteEEPROM(unsigned char address,unsigned char data){
    char SaveInt; 
    SaveInt=INTCON;             //save interrupt status
    EECON1=0;                   //ensure CFGS=0 and EEPGD=0
    EECON1bits.WREN = 1;        //enable write to EEPROM
    EEADR = address;            //setup Address
    EEDATA = data;              //and data
    INTCONbits.GIE=0;           //No interrupts
    EECON2 = 0x55;              //required sequence #1
    EECON2 = 0xaa;              //#2
    EECON1bits.WR = 1;          //#3 = actual write
    INTCON=SaveInt;             //restore interrupts
    while(!PIR2bits.EEIF);      //wait until finished
    EECON1bits.WREN = 0;        //disable write to EEPROM
}

¿Hay algo más que deba hacer para almacenar datos en EEPROM? ¿O estoy haciendo algo mal?

    
pregunta

1 respuesta

1

Aquí hay una función de ejemplo para escribir en el eeprom.

void write_16f84_eeprom(unsigned char adr, unsigned char d)
{
   EEADR = adr;  // the address within the EEPROM
   EEDATA = d;   // the data to be written to that address

   WREN = 1;     // write enable
   EECON2 = 0x55; // protection sequence
   EECON2 = 0xaa;

   WR = 1;      // begin programming sequence

   // wait, in loop, for write operation to complete
   // I.E, WR control bit is 0
   //     and EEIF interrupt flag bit is 1

   WREN = 0;  // disable write enable

   // after completion of the write operation
   EEIF = 0 
}
    
respondido por el user3629249

Lea otras preguntas en las etiquetas