| 565 |
|
|
| 566 |
#endif |
#endif |
| 567 |
|
|
|
#define __boot_eeprom_spm_safe(func, address, data) \ |
|
|
do { \ |
|
|
boot_spm_busy_wait(); \ |
|
|
eeprom_busy_wait(); \ |
|
|
func (address, data); \ |
|
|
} while (0) |
|
|
|
|
| 568 |
/** \ingroup avr_boot |
/** \ingroup avr_boot |
| 569 |
|
|
| 570 |
Same as boot_page_fill() except it waits for eeprom and spm operations to |
Same as boot_page_fill() except it waits for eeprom and spm operations to |
| 571 |
complete before filling the page. */ |
complete before filling the page. */ |
| 572 |
|
|
| 573 |
#define boot_page_fill_safe(address, data) \ |
#define boot_page_fill_safe(address, data) \ |
| 574 |
__boot_eeprom_spm_safe (boot_page_fill, address, data) |
do { \ |
| 575 |
|
boot_spm_busy_wait(); \ |
| 576 |
|
eeprom_busy_wait(); \ |
| 577 |
|
boot_page_fill(address, data); \ |
| 578 |
|
} while (0) |
| 579 |
|
|
| 580 |
/** \ingroup avr_boot |
/** \ingroup avr_boot |
| 581 |
|
|
| 582 |
Same as boot_page_erase() except it waits for eeprom and spm operations to |
Same as boot_page_erase() except it waits for eeprom and spm operations to |
| 583 |
complete before erasing the page. */ |
complete before erasing the page. */ |
| 584 |
|
|
| 585 |
#define boot_page_erase_safe(address, data) \ |
#define boot_page_erase_safe(address) \ |
| 586 |
__boot_eeprom_spm_safe (boot_page_erase, address, data) |
do { \ |
| 587 |
|
boot_spm_busy_wait(); \ |
| 588 |
|
eeprom_busy_wait(); \ |
| 589 |
|
boot_page_erase (address); \ |
| 590 |
|
} while (0) |
| 591 |
|
|
| 592 |
/** \ingroup avr_boot |
/** \ingroup avr_boot |
| 593 |
|
|
| 594 |
Same as boot_page_write() except it waits for eeprom and spm operations to |
Same as boot_page_write() except it waits for eeprom and spm operations to |
| 595 |
complete before writing the page. */ |
complete before writing the page. */ |
| 596 |
|
|
| 597 |
#define boot_page_write_safe(address, data) \ |
#define boot_page_write_safe(address) \ |
| 598 |
__boot_eeprom_spm_safe (boot_page_wrte, address, data) |
do { \ |
| 599 |
|
boot_spm_busy_wait(); \ |
| 600 |
|
eeprom_busy_wait(); \ |
| 601 |
|
boot_page_write (address); \ |
| 602 |
|
} while (0) |
| 603 |
|
|
| 604 |
/** \ingroup avr_boot |
/** \ingroup avr_boot |
| 605 |
|
|
| 606 |
Same as boot_rww_enable() except waits for eeprom and spm operations to |
Same as boot_rww_enable() except waits for eeprom and spm operations to |
| 607 |
complete before enabling the RWW mameory. */ |
complete before enabling the RWW mameory. */ |
| 608 |
|
|
| 609 |
#define boot_rww_enable_safe(address, data) \ |
#define boot_rww_enable_safe() \ |
| 610 |
__boot_eeprom_spm_safe (boot_rww_enable, address, data) |
do { \ |
| 611 |
|
boot_spm_busy_wait(); \ |
| 612 |
|
eeprom_busy_wait(); \ |
| 613 |
|
boot_rww_enable(); \ |
| 614 |
|
} while (0) |
| 615 |
|
|
| 616 |
/** \ingroup avr_boot |
/** \ingroup avr_boot |
| 617 |
|
|
| 618 |
Same as boot_lock_bits_set() except waits for eeprom and spm operations to |
Same as boot_lock_bits_set() except waits for eeprom and spm operations to |
| 619 |
complete before setting the lock bits. */ |
complete before setting the lock bits. */ |
| 620 |
|
|
| 621 |
#define boot_lock_bits_set_safe(address, data) \ |
#define boot_lock_bits_set_safe(lock_bits) \ |
| 622 |
__boot_eeprom_spm_safe (boot_lock_bits_set, address, data) |
do { \ |
| 623 |
|
boot_spm_busy_wait(); \ |
| 624 |
|
eeprom_busy_wait(); \ |
| 625 |
|
boot_lock_bits_set (lock_bits); \ |
| 626 |
|
} while (0) |
| 627 |
|
|
| 628 |
#endif /* _AVR_BOOT_H_ */ |
#endif /* _AVR_BOOT_H_ */ |