From 12a01ed72d0d6dbf243160302314870e7b29cc07 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Sun, 21 Feb 2010 05:44:12 +0000
Subject: [PATCH] Increased the speed of both software and hardware TPI/PDI
 programming modes of the AVRISP project.

---
 LUFA/ManPages/ChangeLog.txt                    | 1 +
 Projects/AVRISP-MKII/Lib/V2Protocol.c          | 4 ++++
 Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c | 8 ++++----
 Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h   | 2 +-
 4 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 5e2241d42..f05ace33d 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -14,6 +14,7 @@
   *  <b>Changed:</b>
   *  - AVRISP programmer project now has a more robust timeout system, allowing for a doubling of the software USART speed
   *    for PDI and TPI programming
+  *  - Increased the speed of both software and hardware TPI/PDI programming modes of the AVRISP project
   *
   *  <b>Fixed:</b>
   *  - (None)
diff --git a/Projects/AVRISP-MKII/Lib/V2Protocol.c b/Projects/AVRISP-MKII/Lib/V2Protocol.c
index cea42eae5..f7e5e8102 100644
--- a/Projects/AVRISP-MKII/Lib/V2Protocol.c
+++ b/Projects/AVRISP-MKII/Lib/V2Protocol.c
@@ -42,6 +42,8 @@ uint32_t CurrentAddress;
 /** Flag to indicate that the next read/write operation must update the device's current address */
 bool MustSetAddress;
 
+bool CommandTimedOut;
+
 /** Initializes the hardware and software associated with the V2 protocol command handling. */
 void V2Protocol_Init(void)
 {
@@ -68,6 +70,8 @@ void V2Protocol_ProcessCommand(void)
 {
 	uint8_t V2Command = Endpoint_Read_Byte();
 	
+	CommandTimedOut = false;
+	
 	switch (V2Command)
 	{
 		case CMD_SIGN_ON:
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
index a6a57670b..805eaa31f 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
@@ -124,9 +124,9 @@ static void XPROGProtocol_EnterXPROGMode(void)
 		XPROGTarget_SendByte(PDI_CMD_STCS | PDI_RESET_REG);	
 		XPROGTarget_SendByte(PDI_RESET_KEY);
 
-		/* Lower direction change guard time to 8 USART bits */
+		/* Lower direction change guard time to 0 USART bits */
 		XPROGTarget_SendByte(PDI_CMD_STCS | PDI_CTRL_REG);	
-		XPROGTarget_SendByte(0x04);
+		XPROGTarget_SendByte(0x07);
 
 		/* Enable access to the XPROG NVM bus by sending the documented NVM access key to the device */
 		XPROGTarget_SendByte(PDI_CMD_KEY);	
@@ -141,9 +141,9 @@ static void XPROGProtocol_EnterXPROGMode(void)
 		/* Enable TPI programming mode with the attached target */
 		XPROGTarget_EnableTargetTPI();
 		
-		/* Lower direction change guard time to 8 USART bits */
+		/* Lower direction change guard time to 0 USART bits */
 		XPROGTarget_SendByte(TPI_CMD_SSTCS | TPI_CTRL_REG);
-		XPROGTarget_SendByte(0x04);
+		XPROGTarget_SendByte(0x07);
 		
 		/* Enable access to the XPROG NVM bus by sending the documented NVM access key to the device */
 		XPROGTarget_SendByte(TPI_CMD_SKEY);	
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
index d08a8b653..0c54ad4cf 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
@@ -81,7 +81,7 @@
 		#endif
 		
 		/** Number of cycles between each clock when software USART mode is used */
-		#define BITS_BETWEEN_USART_CLOCKS  100
+		#define BITS_BETWEEN_USART_CLOCKS  80
 		
 		/** Total number of bits in a single USART frame */
 		#define BITS_IN_USART_FRAME        12
-- 
GitLab