mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-16 12:51:47 +00:00
Fixed broken lock byte programming in the AVRISP-MKII clone project for some XMEGA targets.
This commit is contained in:
parent
824ce10390
commit
a447ae134f
@ -68,6 +68,7 @@
|
|||||||
* - Fixed incorrect LEDs_ChangeLEDs() function in the Benito board LED driver
|
* - Fixed incorrect LEDs_ChangeLEDs() function in the Benito board LED driver
|
||||||
* - Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set
|
* - Fixed incorrect USB_DeviceState value when unconfiguring the device without an address set
|
||||||
* - Fixed broken FLASH/EEPROM programming in the AVRISP-MKII clone project when writing in non-paged mode and the polling byte cannot be used
|
* - Fixed broken FLASH/EEPROM programming in the AVRISP-MKII clone project when writing in non-paged mode and the polling byte cannot be used
|
||||||
|
* - Fixed broken lock byte programming in the AVRISP-MKII clone project for some XMEGA targets
|
||||||
*
|
*
|
||||||
* \section Sec_ChangeLog100807 Version 100807
|
* \section Sec_ChangeLog100807 Version 100807
|
||||||
* <b>New:</b>
|
* <b>New:</b>
|
||||||
|
@ -216,11 +216,20 @@ bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAd
|
|||||||
XMEGANVM_SendNVMRegAddress(XMEGA_NVM_REG_CMD);
|
XMEGANVM_SendNVMRegAddress(XMEGA_NVM_REG_CMD);
|
||||||
XPROGTarget_SendByte(WriteCommand);
|
XPROGTarget_SendByte(WriteCommand);
|
||||||
|
|
||||||
/* Send new memory byte to the memory to the target */
|
/* Send new memory byte to the memory of the target */
|
||||||
XPROGTarget_SendByte(PDI_CMD_STS | (PDI_DATSIZE_4BYTES << 2));
|
XPROGTarget_SendByte(PDI_CMD_STS | (PDI_DATSIZE_4BYTES << 2));
|
||||||
XMEGANVM_SendAddress(WriteAddress);
|
XMEGANVM_SendAddress(WriteAddress);
|
||||||
XPROGTarget_SendByte(Byte);
|
XPROGTarget_SendByte(Byte);
|
||||||
|
|
||||||
|
/* Lock bytes need a special confirmation sequence for the write to complete */
|
||||||
|
if (WriteCommand == XMEGA_NVM_CMD_WRITELOCK)
|
||||||
|
{
|
||||||
|
/* Set CMDEX bit in NVM CTRLA register to start the Lock Byte write sequence */
|
||||||
|
XPROGTarget_SendByte(PDI_CMD_STS | (PDI_DATSIZE_4BYTES << 2));
|
||||||
|
XMEGANVM_SendNVMRegAddress(XMEGA_NVM_REG_CTRLA);
|
||||||
|
XPROGTarget_SendByte(1 << 0);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,8 +324,6 @@ static void XPROGProtocol_WriteMemory(void)
|
|||||||
EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;
|
EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;
|
||||||
break;
|
break;
|
||||||
case XPRG_MEM_TYPE_USERSIG:
|
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;
|
WriteCommand = XMEGA_NVM_CMD_WRITEUSERSIG;
|
||||||
break;
|
break;
|
||||||
case XPRG_MEM_TYPE_FUSE:
|
case XPRG_MEM_TYPE_FUSE:
|
||||||
|
Loading…
Reference in New Issue
Block a user