X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/021b1b567e8686d4addccb53511b7f5447392267..24f730fce3f2022762011d795c3feada5ef874b3:/Projects/AVRISP/Lib/PDITarget.c diff --git a/Projects/AVRISP/Lib/PDITarget.c b/Projects/AVRISP/Lib/PDITarget.c index afcf8b81f..29bb33985 100644 --- a/Projects/AVRISP/Lib/PDITarget.c +++ b/Projects/AVRISP/Lib/PDITarget.c @@ -167,7 +167,7 @@ void PDITarget_DisableTargetPDI(void) * * \param[in] Byte Byte to send through the USART */ -void PDITarget_SendByte(uint8_t Byte) +void PDITarget_SendByte(const uint8_t Byte) { #if defined(PDI_VIA_HARDWARE_USART) /* Switch to Tx mode if currently in Rx mode */ @@ -311,14 +311,23 @@ void PDITarget_SendBreak(void) bool PDITarget_WaitWhileNVMBusBusy(void) { TCNT0 = 0; - + TIFR0 = (1 << OCF1A); + + uint8_t TimeoutMS = PDI_NVM_TIMEOUT_MS; + /* Poll the STATUS register to check to see if NVM access has been enabled */ - while (TCNT0 < PDI_NVM_TIMEOUT_MS) + while (TimeoutMS) { /* Send the LDCS command to read the PDI STATUS register to see the NVM bus is active */ PDITarget_SendByte(PDI_CMD_LDCS | PDI_STATUS_REG); if (PDITarget_ReceiveByte() & PDI_STATUS_NVM) return true; + + if (TIFR0 & (1 << OCF1A)) + { + TIFR0 = (1 << OCF1A); + TimeoutMS--; + } } return false;