From e322f14620a1064efc4b3a98cf701efc48da81cc Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 21 Feb 2010 06:26:33 +0000 Subject: More fixes to the AVRISP command timeout system so that it should no longer lock up while processing command no matter what the conditions. --- Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c') diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c index 51ba1ec97..94f1c3d74 100644 --- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c +++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c @@ -112,7 +112,6 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1 const uint8_t DelayMS, const uint8_t ReadMemCommand) { uint8_t ProgrammingStatus = STATUS_CMD_OK; - uint8_t TimeoutMSRemaining = 100; /* Determine method of Programming Complete check */ switch (ProgrammingMode & ~(PROG_MODE_PAGED_WRITES_MASK | PROG_MODE_COMMIT_PAGE_MASK)) @@ -148,6 +147,9 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1 break; } + if (ProgrammingStatus == STATUS_CMD_OK) + TimeoutMSRemaining = COMMAND_TIMEOUT_MS; + return ProgrammingStatus; } @@ -158,8 +160,6 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1 */ uint8_t ISPTarget_WaitWhileTargetBusy(void) { - uint8_t TimeoutMSRemaining = 100; - do { /* Manage software timeout */ @@ -175,7 +175,15 @@ uint8_t ISPTarget_WaitWhileTargetBusy(void) } while ((SPI_ReceiveByte() & 0x01) && TimeoutMSRemaining); - return ((TimeoutMSRemaining) ? STATUS_CMD_OK : STATUS_RDY_BSY_TOUT); + if (TimeoutMSRemaining) + { + TimeoutMSRemaining = COMMAND_TIMEOUT_MS; + return STATUS_CMD_OK; + } + else + { + return STATUS_RDY_BSY_TOUT; + } } /** Sends a low-level LOAD EXTENDED ADDRESS command to the target, for addressing of memory beyond the -- cgit v1.2.3