From a114878209e275cbbbad64e79746975f4c16a291 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Fri, 29 Jan 2010 06:02:02 +0000 Subject: [PATCH] Oops - TPI programming is broken in the AVRISP project because the busy-flag check wasn't inverting the result. --- Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c b/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c index 0e6833a7fa..e7513032f6 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c @@ -55,7 +55,7 @@ static void TINYNVM_SendPointerAddress(const uint16_t AbsoluteAddress) */ static void TINYNVM_SendReadNVMRegister(uint8_t Address) { - /* The TPI command for reading from the I/O space uses wierd addressing, where the I/O address's upper + /* The TPI command for reading from the I/O space uses strange addressing, where the I/O address's upper * two bits of the 6-bit address are shifted left once */ XPROGTarget_SendByte(TPI_CMD_SIN | ((Address & 0x30) << 1) | (Address & 0x0F)); } @@ -99,9 +99,11 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void) /* Poll the STATUS register to check to see if NVM access has been enabled */ while (TimeoutMSRemaining) { - /* Send the SIN command to read the TPI STATUS register to see the NVM bus is active */ + /* Send the SIN command to read the TPI STATUS register to see the NVM bus is busy */ TINYNVM_SendReadNVMRegister(XPROG_Param_NVMCSRRegAddr); - if (XPROGTarget_ReceiveByte() & (1 << 7)) + + /* Check to see if the BUSY flag is still set */ + if (!(XPROGTarget_ReceiveByte() & (1 << 7))) return true; }