53#define OP_TRIGGER_SEQ_FIRST_BYTE 0x5A
59#define OP_TRIGGER_SEQ_SECOND_BYTE 0xA5
73#define ERROR_VALUE 0xFF
83#define eeprom_disable_iap() \
86 bit_clr(IAP_CONTR, SBIT7); \
101#define get_eeprom_last_operation_result() (test_if_bit_set(IAP_CONTR, CMD_FAIL_BIT) ? CMD_FAIL_ERROR : CMD_SUCCESS)
126#define eeprom_read_byte(addr_high, addr_low, value_ptr, error_ptr) \
128 if (get_power_low_voltage_flag()) \
130 *error_ptr = LOW_VOLTAGE_ERROR; \
131 *value_ptr = ERROR_VALUE; \
136 bit_set(IAP_CONTR, SBIT7); \
138 IAP_CONTR &= ~0x07; \
142 IAP_ADDRH = (addr_high); \
143 IAP_ADDRL = (addr_low); \
149 IAP_TRIG = OP_TRIGGER_SEQ_FIRST_BYTE; \
150 IAP_TRIG = OP_TRIGGER_SEQ_SECOND_BYTE; \
156 *error_ptr = get_eeprom_last_operation_result(); \
158 *value_ptr = (*error_ptr) ? ERROR_VALUE : IAP_DATA; \
160 eeprom_disable_iap(); \
187#define eeprom_erase_page(sector_start_addr, error_ptr) \
189 if (get_power_low_voltage_flag()) \
191 *error_ptr = LOW_VOLTAGE_ERROR; \
196 IAP_ADDRH = (sector_start_addr); \
200 IAP_CONTR &= ~0x07; \
204 bit_set(IAP_CONTR, SBIT7); \
207 IAP_CMD = ERASE_OP; \
210 IAP_TRIG = OP_TRIGGER_SEQ_FIRST_BYTE; \
211 IAP_TRIG = OP_TRIGGER_SEQ_SECOND_BYTE; \
217 *error_ptr = get_eeprom_last_operation_result(); \
219 eeprom_disable_iap(); \
250#define eeprom_write_byte(addr_high, addr_low, value, error_ptr) \
252 if (get_power_low_voltage_flag()) \
254 *error_ptr = LOW_VOLTAGE_ERROR; \
259 IAP_ADDRH = addr_high; \
260 IAP_ADDRL = addr_low; \
263 IAP_CONTR &= ~0x07; \
267 bit_set(IAP_CONTR, SBIT7); \
270 IAP_CMD = WRITE_OP; \
276 IAP_TRIG = OP_TRIGGER_SEQ_FIRST_BYTE; \
277 IAP_TRIG = OP_TRIGGER_SEQ_SECOND_BYTE; \
283 *error_ptr = get_eeprom_last_operation_result(); \
285 eeprom_disable_iap(); \
304#define eeprom_write_page(addr_high, arr, arr_size, error_ptr) \
306 eeprom_erase_page(addr_high, error_ptr); \
312 for (uint8_t i = 0; i < arr_size; i++) \
314 eeprom_write_byte(addr_high, i, arr[i], error_ptr); \
eeprom_operation_t
EEPROM operation types.
Definition eeprom.h:23
eeprom_operation_status_t
EEPROM operation status.
Definition eeprom.h:38
@ ERASE_OP
Erase operation.
Definition eeprom.h:29
@ WRITE_OP
Write operation.
Definition eeprom.h:27
@ READ_OP
Read operation.
Definition eeprom.h:25
@ CMD_SUCCESS
Operation success.
Definition eeprom.h:40
@ CMD_FAIL_ERROR
Operation fail.
Definition eeprom.h:42
@ LOW_VOLTAGE_ERROR
Low voltage error.
Definition eeprom.h:44