From 2b74b517ea48507a0ab3fee5628a363ab0dcd3fb Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Tue, 16 Mar 2010 12:09:22 +0000
Subject: [PATCH] Don't enable the pullup on the target /RESET line in the
 AVRISP project for PDI mode - clearing the XMEGA's reset control register
 twice is enough to release it from reset. Possible silicon bug, since the
 official Atmel programmers have the same issue.

---
 LUFA/ManPages/ChangeLog.txt                  | 2 +-
 Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index e7f1f4383..d2c852548 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -27,7 +27,7 @@
   *  - Fixed ADC routines failing to read the extended channels (Channels 8 to 13, Internal Temperature Sensor) on the
   *    U4 series USB AVR parts
   *  - Fixed PDI programming mode in the AVRISP programmer project not exiting programming mode correctly (clear target
-  *    Reset key twice, set /RESET pin to pullup)
+  *    Reset key twice, possible silicon bug?)
   *
   *  \section Sec_ChangeLog100219 Version 100219
   *
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
index 4ecf03335..3a74e1531 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
@@ -237,19 +237,18 @@ void XPROGTarget_DisableTargetPDI(void)
 	UCSR1B  = 0;
 	UCSR1C  = 0;
 
-	/* Make Reset input with pullup to take target out of /RESET, tristate all other pins */
+	/* Tristate all pins */
 	DDRD  &= ~((1 << 5) | (1 << 3));
 	PORTD &= ~((1 << 3) | (1 << 2));
-	PORTD |=   (1 << 5);
 #else
 	/* Turn off software USART management timer */
 	TCCR1B = 0;
 
-	/* Make Reset input with pullup to take target out of /RESET, tristate all other pins */
+	/* Tristate all pins */
 	BITBANG_PDIDATA_DDR   &= ~BITBANG_PDIDATA_MASK;
 	BITBANG_PDICLOCK_DDR  &= ~BITBANG_PDICLOCK_MASK;
 	BITBANG_PDICLOCK_PORT &= ~BITBANG_PDICLOCK_MASK;	
-	BITBANG_PDIDATA_PORT  |=  BITBANG_PDIDATA_MASK;
+	BITBANG_PDIDATA_PORT  &= ~BITBANG_PDIDATA_MASK;
 #endif
 }
 
-- 
GitLab