55#define OP_TRIGGER_SEQ_FIRST_BYTE 0x5A
61#define OP_TRIGGER_SEQ_SECOND_BYTE 0xA5
75#define ERROR_VALUE 0xFF
85#define eeprom_disable_iap() \
88 bit_clr(IAP_CONTR, CBIT7); \
103#define get_eeprom_last_operation_result() (get_bit(IAP_CONTR, CMD_FAIL_BIT) ? CMD_FAIL_ERROR : CMD_SUCCESS)
128#define eeprom_read_byte(addr_high, addr_low, value_ptr, error_ptr) \
130 if (power_low_voltage_flag_get()) \
132 *error_ptr = LOW_VOLTAGE_ERROR; \
133 *value_ptr = ERROR_VALUE; \
138 bit_set(IAP_CONTR, SBIT7); \
140 IAP_CONTR &= ~0x07; \
144 IAP_ADDRH = (addr_high); \
145 IAP_ADDRL = (addr_low); \
151 IAP_TRIG = OP_TRIGGER_SEQ_FIRST_BYTE; \
152 IAP_TRIG = OP_TRIGGER_SEQ_SECOND_BYTE; \
158 *error_ptr = get_eeprom_last_operation_result(); \
160 *value_ptr = (*error_ptr) ? ERROR_VALUE : IAP_DATA; \
162 eeprom_disable_iap(); \
189#define eeprom_erase_page(sector_start_addr, error_ptr) \
191 if (power_low_voltage_flag_get()) \
193 *error_ptr = LOW_VOLTAGE_ERROR; \
198 IAP_ADDRH = (sector_start_addr); \
202 IAP_CONTR &= ~0x07; \
206 bit_set(IAP_CONTR, SBIT7); \
209 IAP_CMD = ERASE_OP; \
212 IAP_TRIG = OP_TRIGGER_SEQ_FIRST_BYTE; \
213 IAP_TRIG = OP_TRIGGER_SEQ_SECOND_BYTE; \
219 *error_ptr = get_eeprom_last_operation_result(); \
221 eeprom_disable_iap(); \
252#define eeprom_write_byte(addr_high, addr_low, value, error_ptr) \
254 if (power_low_voltage_flag_get()) \
256 *error_ptr = LOW_VOLTAGE_ERROR; \
261 IAP_ADDRH = addr_high; \
262 IAP_ADDRL = addr_low; \
265 IAP_CONTR &= ~0x07; \
269 bit_set(IAP_CONTR, SBIT7); \
272 IAP_CMD = WRITE_OP; \
278 IAP_TRIG = OP_TRIGGER_SEQ_FIRST_BYTE; \
279 IAP_TRIG = OP_TRIGGER_SEQ_SECOND_BYTE; \
285 *error_ptr = get_eeprom_last_operation_result(); \
287 eeprom_disable_iap(); \
eeprom_operation_t
EEPROM operation types.
Definition eeprom.h:25
eeprom_operation_status_t
EEPROM operation status.
Definition eeprom.h:40
@ ERASE_OP
Erase operation.
Definition eeprom.h:31
@ WRITE_OP
Write operation.
Definition eeprom.h:29
@ READ_OP
Read operation.
Definition eeprom.h:27
@ CMD_SUCCESS
Operation success.
Definition eeprom.h:42
@ CMD_FAIL_ERROR
Operation fail.
Definition eeprom.h:44
@ LOW_VOLTAGE_ERROR
Low voltage error.
Definition eeprom.h:46