Fixed broken lock byte programming in the AVRISP-MKII clone project for some XMEGA...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XPROGProtocol.c
index f2c2674..85820fd 100644 (file)
@@ -115,7 +115,7 @@ static void XPROGProtocol_EnterXPROGMode(void)
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
        
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
        
-       bool NVMBusEnabled;
+       bool NVMBusEnabled = false;
 
        if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
        {
 
        if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
        {
@@ -131,14 +131,14 @@ static void XPROGProtocol_EnterXPROGMode(void)
                XPROGTarget_SendByte(0x07);
 
                /* Enable access to the XPROG NVM bus by sending the documented NVM access key to the device */
                XPROGTarget_SendByte(0x07);
 
                /* Enable access to the XPROG NVM bus by sending the documented NVM access key to the device */
-               XPROGTarget_SendByte(PDI_CMD_KEY);      
+               XPROGTarget_SendByte(PDI_CMD_KEY);
                for (uint8_t i = sizeof(PDI_NVMENABLE_KEY); i > 0; i--)
                  XPROGTarget_SendByte(PDI_NVMENABLE_KEY[i - 1]);
 
                /* Wait until the NVM bus becomes active */
                NVMBusEnabled = XMEGANVM_WaitWhileNVMBusBusy();
        }
                for (uint8_t i = sizeof(PDI_NVMENABLE_KEY); i > 0; i--)
                  XPROGTarget_SendByte(PDI_NVMENABLE_KEY[i - 1]);
 
                /* Wait until the NVM bus becomes active */
                NVMBusEnabled = XMEGANVM_WaitWhileNVMBusBusy();
        }
-       else
+       else if (XPROG_SelectedProtocol == XPRG_PROTOCOL_TPI)
        {
                /* Enable TPI programming mode with the attached target */
                XPROGTarget_EnableTargetTPI();
        {
                /* Enable TPI programming mode with the attached target */
                XPROGTarget_EnableTargetTPI();
@@ -324,8 +324,6 @@ static void XPROGProtocol_WriteMemory(void)
                                EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;                   
                                break;
                        case XPRG_MEM_TYPE_USERSIG:
                                EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;                   
                                break;
                        case XPRG_MEM_TYPE_USERSIG:
-                               /* User signature is paged, but needs us to manually indicate the mode bits since the host doesn't set them */
-                               WriteMemory_XPROG_Params.PageMode = (XPRG_PAGEMODE_ERASE | XPRG_PAGEMODE_WRITE);
                                WriteCommand     = XMEGA_NVM_CMD_WRITEUSERSIG;
                                break;
                        case XPRG_MEM_TYPE_FUSE:
                                WriteCommand     = XMEGA_NVM_CMD_WRITEUSERSIG;
                                break;
                        case XPRG_MEM_TYPE_FUSE: