X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/be71f934a4434ebeab7e9c2263ffb1170499a169..bd5e8f07b71b4fa0c058c0edfa8ff3f59ab31610:/Projects/AVRISP/Lib/TPITarget.c diff --git a/Projects/AVRISP/Lib/TPITarget.c b/Projects/AVRISP/Lib/TPITarget.c index 8b47006c9..464d40305 100644 --- a/Projects/AVRISP/Lib/TPITarget.c +++ b/Projects/AVRISP/Lib/TPITarget.c @@ -312,8 +312,26 @@ void TPITarget_SendBreak(void) */ bool TPITarget_WaitWhileNVMBusBusy(void) { - // TODO - + TCNT0 = 0; + TIFR0 = (1 << OCF1A); + + uint8_t TimeoutMS = TPI_NVM_TIMEOUT_MS; + + /* Poll the STATUS register to check to see if NVM access has been enabled */ + while (TimeoutMS) + { + /* Send the LDCS command to read the TPI STATUS register to see the NVM bus is active */ + TPITarget_SendByte(TPI_CMD_SLDCS | TPI_STATUS_REG); + if (TPITarget_ReceiveByte() & TPI_STATUS_NVM) + return true; + + if (TIFR0 & (1 << OCF1A)) + { + TIFR0 = (1 << OCF1A); + TimeoutMS--; + } + } + return false; }