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/ISPProtocol.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c') diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c index e0eb44107..85b31fbdb 100644 --- a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c +++ b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c @@ -75,7 +75,7 @@ void ISPProtocol_EnterISPMode(void) /* Continuously attempt to synchronize with the target until either the number of attempts specified * by the host has exceeded, or the the device sends back the expected response values */ - while (Enter_ISP_Params.SynchLoops-- && (ResponseStatus == STATUS_CMD_FAILED)) + while (Enter_ISP_Params.SynchLoops-- && (ResponseStatus == STATUS_CMD_FAILED) && TimeoutMSRemaining) { uint8_t ResponseBytes[4]; @@ -518,4 +518,19 @@ void ISPProtocol_SPIMulti(void) } } +/** Blocking delay for a given number of milliseconds. + * + * \param[in] DelayMS Number of milliseconds to delay for + */ +void ISPProtocol_DelayMS(uint8_t DelayMS) +{ + while (DelayMS-- && TimeoutMSRemaining) + { + if (TimeoutMSRemaining) + TimeoutMSRemaining--; + + _delay_ms(1); + } +} + #endif \ No newline at end of file -- cgit v1.2.3