Additional fix to the AVRISP-MKII clone project for 256KB AVRs.
This commit is contained in:
		
							parent
							
								
									cd0093a14b
								
							
						
					
					
						commit
						571159df1b
					
				
					 2 changed files with 15 additions and 19 deletions
				
			
		|  | @ -227,18 +227,9 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command) | |||
| 				PollAddress = (CurrentAddress & 0xFFFF);				 | ||||
| 			}		 | ||||
| 
 | ||||
| 			/* EEPROM just increments the address each byte, flash needs to increment on each word and
 | ||||
| 			 * also check to ensure that a LOAD EXTENDED ADDRESS command is issued each time the extended | ||||
| 			 * address boundary has been crossed */ | ||||
| 			if (V2Command == CMD_PROGRAM_EEPROM_ISP) | ||||
| 			{ | ||||
| 				CurrentAddress++; | ||||
| 			} | ||||
| 			else if (IsOddByte) | ||||
| 			{ | ||||
| 				if (!(++CurrentAddress & 0xFFFF)) | ||||
| 				  ISPTarget_LoadExtendedAddress();			 | ||||
| 			} | ||||
| 			/* EEPROM increments the address on each byte, flash needs to increment on each word */ | ||||
| 			if (IsOddByte || (V2Command == CMD_PROGRAM_EEPROM_ISP)) | ||||
| 			  CurrentAddress++; | ||||
| 		} | ||||
| 		 | ||||
| 		/* If the current page must be committed, send the PROGRAM PAGE command to the target */ | ||||
|  | @ -258,6 +249,10 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command) | |||
| 
 | ||||
| 			ProgrammingStatus = ISPTarget_WaitForProgComplete(Write_Memory_Params.ProgrammingMode, PollAddress, PollValue, | ||||
| 			                                                  Write_Memory_Params.DelayMS, Write_Memory_Params.ProgrammingCommands[2]); | ||||
| 
 | ||||
| 			/* Check to see if the FLASH address has crossed the extended address boundary */ | ||||
| 			if ((V2Command == CMD_PROGRAM_FLASH_ISP) && !(CurrentAddress & 0xFFFF)) | ||||
| 			  ISPTarget_LoadExtendedAddress();			 | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
|  | @ -285,6 +280,13 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command) | |||
| 				   | ||||
| 				PollAddress = (CurrentAddress & 0xFFFF); | ||||
| 			} | ||||
| 			 | ||||
| 			ProgrammingStatus = ISPTarget_WaitForProgComplete(Write_Memory_Params.ProgrammingMode, PollAddress, PollValue, | ||||
| 			                                                  Write_Memory_Params.DelayMS, Write_Memory_Params.ProgrammingCommands[2]); | ||||
| 			   | ||||
| 			/* Abort the programming loop early if the byte/word programming failed */ | ||||
| 			if (ProgrammingStatus != STATUS_CMD_OK) | ||||
| 			  break; | ||||
| 
 | ||||
| 			/* EEPROM just increments the address each byte, flash needs to increment on each word and
 | ||||
| 			 * also check to ensure that a LOAD EXTENDED ADDRESS command is issued each time the extended | ||||
|  | @ -298,12 +300,6 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command) | |||
| 				if (!(++CurrentAddress & 0xFFFF)) | ||||
| 				  ISPTarget_LoadExtendedAddress();			 | ||||
| 			} | ||||
| 			 | ||||
| 			ProgrammingStatus = ISPTarget_WaitForProgComplete(Write_Memory_Params.ProgrammingMode, PollAddress, PollValue, | ||||
| 			                                                  Write_Memory_Params.DelayMS, Write_Memory_Params.ProgrammingCommands[2]); | ||||
| 			   | ||||
| 			if (ProgrammingStatus != STATUS_CMD_OK) | ||||
| 			  break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dean Camera
						Dean Camera