More fixes to the AVRISP command timeout system so that it should no longer lock up while processing command no matter what the conditions.

This commit is contained in:
Dean Camera 2010-02-21 06:26:33 +00:00
parent 12a01ed72d
commit e322f14620
8 changed files with 58 additions and 31 deletions

View file

@ -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