From 1151f5ffdade5ebf1ee65275e218ad6b4dfd2695 Mon Sep 17 00:00:00 2001 From: Marco Oliverio Date: Thu, 19 Jun 2025 16:56:02 +0200 Subject: [PATCH] pic32c: flash: check done flag after operations --- hal/pic32c.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/hal/pic32c.c b/hal/pic32c.c index 87205ad9..ef3f6839 100644 --- a/hal/pic32c.c +++ b/hal/pic32c.c @@ -186,7 +186,11 @@ static int pic32_write_dqword_aligned(uint32_t addr, const uint32_t *data) pic32_fcw_wait_complete(); err = pic32_get_errs(); pic32_last_err = err; - err &= ~FCW_INTFLAG_DONE_BIT; + if (!(err & FCW_INTFLAG_DONE_BIT)) { + err = -1; + } else { + err &= ~FCW_INTFLAG_DONE_BIT; + } pic32_clear_errs(); return err; } @@ -210,9 +214,13 @@ static int pic32_fcw_erase_sector(uint32_t addr) pic32_fcw_start_op(FCW_OP_ERASE_SECTOR); pic32_fcw_wait_complete(); err = pic32_get_errs(); - pic32_clear_errs(); pic32_last_err = err; - err &= ~FCW_INTFLAG_DONE_BIT; + if (!(err & FCW_INTFLAG_DONE_BIT)) { + err = -1; + } else { + err &= ~FCW_INTFLAG_DONE_BIT; + } + pic32_clear_errs(); return err; }