int1 flag_Writing_INTERNAL_EEPROM=0;
const int8 EEINT_max_num_write_retrys=3;
#int_eeprom
/** \brief Interrupción por : Fin escritura EEPROM interna.
*
*/
void interrupt_service_rutine_eeprom(void) {
flag_Writing_INTERNAL_EEPROM=0;
}
/** \brief Función para la escritura de un byte dando su valor y su dirección absoluta.
*
* Esta función utiliza la interrupción INTEEPROM en main.c que indica cuando ha finalizado la escritura de la EEPROM.
*
* \param memAddress Dirección absoluta de 8 bits a escribir (rango de 00h a FFh).
* \param data Valor del byte a escribir (rango de 00h a ffh).
*
* \return int1 0 Write Ok, 1 Write Error
*/
int1 writeByteINTEEPROM(int8 memAddress, int8 data){
int1 ret;
int8 count;
int8 datatest;
ret=0; count=1;
write_1:
flag_Writing_INTERNAL_EEPROM=1;
enable_interrupts(int_eeprom);
write_eeprom (memAddress, data);
while(flag_Writing_INTERNAL_EEPROM==1){/*Wait for write finish*/}
disable_interrupts(int_eeprom);
test_1:
datatest = readByteINTEEPROM(memAddress);
if(datatest != data){
if(++count==EEINT_max_num_write_retrys){
ret = 1;
goto exit_1;
}
goto write_1;
}
exit_1:
return ret;
}