diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 48361e3075fda9a2adbaf2963a7a952e7f0ef20d..41e82ea0c0e596790416b0edff02b81b18da8517 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -17,6 +17,7 @@
   *  - Slowed down bit-banged PDI programming in the AVRISP project slightly to prevent transmission errors
   *
   *  <b>Fixed:</b>
+  *  - Fixed AVRISP project not able to enter programming mode when ISP protocol is used
   *
   *  \section Sec_ChangeLog091223 Version 091223
   *
diff --git a/Projects/AVRISP/Lib/ISP/ISPProtocol.h b/Projects/AVRISP/Lib/ISP/ISPProtocol.h
index abbbf569d6882727c6a5a1ec76bdd013b0c5f437..127c8266c2dd8adb42408133b1aff96be9d0b76b 100644
--- a/Projects/AVRISP/Lib/ISP/ISPProtocol.h
+++ b/Projects/AVRISP/Lib/ISP/ISPProtocol.h
@@ -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: */
diff --git a/Projects/AVRISP/Lib/ISP/ISPTarget.c b/Projects/AVRISP/Lib/ISP/ISPTarget.c
index 29cb18e620157082e72a06f85176233634de4dcc..a3a8b22892a75d6f2eb1d72ad045ae9ef6ceffad 100644
--- a/Projects/AVRISP/Lib/ISP/ISPTarget.c
+++ b/Projects/AVRISP/Lib/ISP/ISPTarget.c
@@ -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);
diff --git a/Projects/AVRISP/Lib/V2ProtocolParams.c b/Projects/AVRISP/Lib/V2ProtocolParams.c
index eacff03944343aa5a391ee6ca8e4e12fddc57bf0..105633560a3fbf6634d9edc25163cd23a55d36e7 100644
--- a/Projects/AVRISP/Lib/V2ProtocolParams.c
+++ b/Projects/AVRISP/Lib/V2ProtocolParams.c
@@ -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;
diff --git a/Projects/AVRISP/makefile b/Projects/AVRISP/makefile
index f5bb5b7123658fbfb44d02241a8f6a0a28a4d0e6..823535f45ed07e8b3447adb393b8b065562b3117 100644
--- a/Projects/AVRISP/makefile
+++ b/Projects/AVRISP/makefile
@@ -60,7 +60,7 @@
 
 
 # MCU name
-MCU = at90usb1287
+MCU = at90usb162
 
 
 # Target board (see library "Board Types" documentation, USER or blank for projects not requiring