Fixed broken lock byte programming in the AVRISP-MKII clone project for some XMEGA targets.
This commit is contained in:
		
							parent
							
								
									824ce10390
								
							
						
					
					
						commit
						a447ae134f
					
				
					 3 changed files with 11 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -216,10 +216,19 @@ bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAd
 | 
			
		|||
	XMEGANVM_SendNVMRegAddress(XMEGA_NVM_REG_CMD);
 | 
			
		||||
	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));
 | 
			
		||||
	XMEGANVM_SendAddress(WriteAddress);
 | 
			
		||||
	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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -324,8 +324,6 @@ static void XPROGProtocol_WriteMemory(void)
 | 
			
		|||
				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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue