Fixed ISP mode in the AVRISP programmer project.
This commit is contained in:
		
							parent
							
								
									d1608d4af3
								
							
						
					
					
						commit
						8cd7e118e9
					
				
					 5 changed files with 17 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -38,6 +38,7 @@
 | 
			
		|||
 | 
			
		||||
	/* Includes: */
 | 
			
		||||
		#include <avr/io.h>
 | 
			
		||||
		#include <util/delay.h>
 | 
			
		||||
		
 | 
			
		||||
		#include <LUFA/Drivers/USB/USB.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,26 +67,14 @@
 | 
			
		|||
		#define PROG_MODE_COMMIT_PAGE_MASK      (1 << 7)
 | 
			
		||||
 | 
			
		||||
	/* Inline Functions: */
 | 
			
		||||
		/** Blocking delay for a given number of milliseconds, via a hardware timer.
 | 
			
		||||
		/** Blocking delay for a given number of milliseconds.
 | 
			
		||||
		 *
 | 
			
		||||
		 *  \param[in] DelayMS  Number of milliseconds to delay for
 | 
			
		||||
		 */
 | 
			
		||||
		static inline void ISPProtocol_DelayMS(uint8_t DelayMS)
 | 
			
		||||
		{
 | 
			
		||||
			OCR2A  = ((F_CPU / 64) / 1000);
 | 
			
		||||
			TCCR2A = (1 << WGM01);
 | 
			
		||||
			TCCR2B = ((1 << CS01) | (1 << CS00));			
 | 
			
		||||
 | 
			
		||||
			while (DelayMS)
 | 
			
		||||
			{
 | 
			
		||||
				if (TIFR2 & (1 << OCF2A))
 | 
			
		||||
				{
 | 
			
		||||
					TIFR2 = (1 << OCF2A);
 | 
			
		||||
					DelayMS--;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			TCCR2B = 0;			
 | 
			
		||||
			while (DelayMS--)
 | 
			
		||||
			  _delay_ms(1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	/* Function Prototypes: */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -122,6 +122,9 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1
 | 
			
		|||
			break;
 | 
			
		||||
		case PROG_MODE_WORD_VALUE_MASK:
 | 
			
		||||
		case PROG_MODE_PAGED_VALUE_MASK:
 | 
			
		||||
			TCNT0 = 0;
 | 
			
		||||
			TIFR0 = (1 << OCF1A);
 | 
			
		||||
			
 | 
			
		||||
			do
 | 
			
		||||
			{
 | 
			
		||||
				SPI_SendByte(ReadMemCommand);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -131,7 +131,7 @@ uint8_t V2Params_GetParameterValue(const uint8_t ParamID)
 | 
			
		|||
{
 | 
			
		||||
	ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
 | 
			
		||||
	
 | 
			
		||||
	if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivileges & PARAM_PRIV_READ))
 | 
			
		||||
	if (ParamInfo == NULL)
 | 
			
		||||
	  return 0;
 | 
			
		||||
	
 | 
			
		||||
	return ParamInfo->ParamValue;
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +148,7 @@ void V2Params_SetParameterValue(const uint8_t ParamID, const uint8_t Value)
 | 
			
		|||
{
 | 
			
		||||
	ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
 | 
			
		||||
 | 
			
		||||
	if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivileges & PARAM_PRIV_WRITE))
 | 
			
		||||
	if (ParamInfo == NULL)
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	ParamInfo->ParamValue = Value;
 | 
			
		||||
| 
						 | 
				
			
			@ -167,11 +167,15 @@ void V2Params_SetParameterValue(const uint8_t ParamID, const uint8_t Value)
 | 
			
		|||
 */
 | 
			
		||||
static ParameterItem_t* V2Params_GetParamFromTable(const uint8_t ParamID)
 | 
			
		||||
{
 | 
			
		||||
	ParameterItem_t* CurrTableItem = ParameterTable;
 | 
			
		||||
 | 
			
		||||
	/* Find the parameter in the parameter table if present */
 | 
			
		||||
	for (uint8_t TableIndex = 0; TableIndex < (sizeof(ParameterTable) / sizeof(ParameterTable[0])); TableIndex++)
 | 
			
		||||
	{
 | 
			
		||||
		if (ParamID == ParameterTable[TableIndex].ParamID)
 | 
			
		||||
		  return &ParameterTable[TableIndex];
 | 
			
		||||
		if (ParamID == CurrTableItem->ParamID)
 | 
			
		||||
		  return CurrTableItem;
 | 
			
		||||
		
 | 
			
		||||
		CurrTableItem++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return NULL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
# MCU name
 | 
			
		||||
MCU = at90usb1287
 | 
			
		||||
MCU = at90usb162
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue