aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-02-21 06:26:33 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-02-21 06:26:33 +0000
commite322f14620a1064efc4b3a98cf701efc48da81cc (patch)
treeb1d236f9627fcf0386279077dad2136d321d47fb /Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
parent12a01ed72d0d6dbf243160302314870e7b29cc07 (diff)
downloadlufa-e322f14620a1064efc4b3a98cf701efc48da81cc.tar.gz
lufa-e322f14620a1064efc4b3a98cf701efc48da81cc.tar.bz2
lufa-e322f14620a1064efc4b3a98cf701efc48da81cc.zip
More fixes to the AVRISP command timeout system so that it should no longer lock up while processing command no matter what the conditions.
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c')
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c17
1 files changed, 16 insertions, 1 deletions
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