Remove missed timer 0 init code in the ISP protocol handler in the AVRISP project...
[pub/USBasp.git] / Projects / AVRISP / Lib / XPROG / XPROGProtocol.c
index f83561c..bccb96c 100644 (file)
@@ -38,7 +38,7 @@
 \r
 #if defined(ENABLE_XPROG_PROTOCOL) || defined(__DOXYGEN__)\r
 /** Base absolute address for the target's NVM controller */\r
-uint32_t XPROG_Param_NVMBase = 0x010001C0;\r
+uint32_t XPROG_Param_NVMBase    = 0x010001C0;\r
 \r
 /** Size in bytes of the target's EEPROM page */\r
 uint32_t XPROG_Param_EEPageSize;\r
@@ -46,7 +46,6 @@ uint32_t XPROG_Param_EEPageSize;
 /** Currently selected XPROG programming protocol */\r
 uint8_t  XPROG_SelectedProtocol = XPRG_PROTOCOL_PDI;\r
 \r
-\r
 /** Handler for the CMD_XPROG_SETMODE command, which sets the programmer-to-target protocol used for PDI/TPI\r
  *  programming.\r
  */\r
@@ -132,7 +131,13 @@ static void XPROGProtocol_EnterXPROGMode(void)
                /* Enable TPI programming mode with the attached target */\r
                XPROGTarget_EnableTargetTPI();\r
                \r
-               // TODO - enable NVM bus via KEY                \r
+               /* Enable access to the XPROG NVM bus by sending the documented NVM access key to the device */\r
+               XPROGTarget_SendByte(TPI_CMD_SKEY);     \r
+               for (uint8_t i = sizeof(TPI_NVMENABLE_KEY); i > 0; i--)\r
+                 XPROGTarget_SendByte(TPI_NVMENABLE_KEY[i - 1]);\r
+\r
+               /* Wait until the NVM bus becomes active */\r
+               NVMBusEnabled = TINYNVM_WaitWhileNVMBusBusy();\r
        }\r
        \r
        Endpoint_Write_Byte(CMD_XPROG);\r
@@ -159,7 +164,9 @@ static void XPROGProtocol_LeaveXPROGMode(void)
        }\r
        else\r
        {\r
-               // TODO - Disable TPI via register\r
+               /* Clear the NVMEN bit in the TPI CONTROL register to disable TPI mode */\r
+               XPROGTarget_SendByte(TPI_CMD_SSTCS | TPI_CTRL_REG);     \r
+               XPROGTarget_SendByte(0x00);\r
        \r
                XPROGTarget_DisableTargetTPI();\r
        }\r