Use _delay_us() function in the XPROGTarget.c file to ensure timing requirements...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / TINYNVM.c
index c650f0d..e751303 100644 (file)
@@ -51,18 +51,18 @@ static void TINYNVM_SendPointerAddress(const uint16_t AbsoluteAddress)
 \r
 /** Sends a SIN command to the target with the specified I/O address, ready for the data byte to be written.\r
  *\r
- *  \param Address  6-bit I/O address to write to in the target's I/O memory space\r
+ *  \param[in] Address  6-bit I/O address to write to in the target's I/O memory space\r
  */\r
 static void TINYNVM_SendReadNVMRegister(uint8_t Address)\r
 {\r
-       /* The TPI command for reading from the I/O space uses wierd addressing, where the I/O address's upper\r
+       /* The TPI command for reading from the I/O space uses strange addressing, where the I/O address's upper\r
         * two bits of the 6-bit address are shifted left once */\r
        XPROGTarget_SendByte(TPI_CMD_SIN | ((Address & 0x30) << 1) | (Address & 0x0F));\r
 }\r
 \r
 /** Sends a SOUT command to the target with the specified I/O address, ready for the data byte to be read.\r
  *\r
- *  \param Address  6-bit I/O address to read from in the target's I/O memory space\r
+ *  \param[in] Address  6-bit I/O address to read from in the target's I/O memory space\r
  */\r
 static void TINYNVM_SendWriteNVMRegister(uint8_t Address)\r
 {\r
@@ -99,9 +99,11 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void)
        /* Poll the STATUS register to check to see if NVM access has been enabled */\r
        while (TimeoutMSRemaining)\r
        {\r
-               /* Send the SIN command to read the TPI STATUS register to see the NVM bus is active */\r
+               /* Send the SIN command to read the TPI STATUS register to see the NVM bus is busy */\r
                TINYNVM_SendReadNVMRegister(XPROG_Param_NVMCSRRegAddr);\r
-               if (XPROGTarget_ReceiveByte() & (1 << 7))\r
+\r
+               /* Check to see if the BUSY flag is still set */\r
+               if (!(XPROGTarget_ReceiveByte() & (1 << 7)))\r
                  return true;\r
        }\r
        \r
@@ -116,7 +118,7 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void)
  *\r
  *  \return Boolean true if the command sequence complete successfully\r
  */\r
-bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize)\r
+bool TINYNVM_ReadMemory(const uint16_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize)\r
 {\r
        /* Wait until the NVM controller is no longer busy */\r
        if (!(TINYNVM_WaitWhileNVMControllerBusy()))\r
@@ -147,7 +149,7 @@ bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_
  *\r
  *  \return Boolean true if the command sequence complete successfully\r
  */\r
-bool TINYNVM_WriteMemory(const uint32_t WriteAddress, const uint8_t* WriteBuffer, uint16_t WriteLength)\r
+bool TINYNVM_WriteMemory(const uint16_t WriteAddress, const uint8_t* WriteBuffer, uint16_t WriteLength)\r
 {\r
        /* Wait until the NVM controller is no longer busy */\r
        if (!(TINYNVM_WaitWhileNVMControllerBusy()))\r