aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP/Lib/TPITarget.c
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/AVRISP/Lib/TPITarget.c')
-rw-r--r--Projects/AVRISP/Lib/TPITarget.c22
1 files changed, 20 insertions, 2 deletions
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;
}