From 7aecda6fda5bcced68d72b0cf73d00174aa5c7cd Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Thu, 10 Dec 2009 00:54:08 +0000
Subject: [PATCH] Fix PDITarget_ReceiveByte() not discarding the start bit
 properly, and reading in the bits inverted and in the wrong order.

---
 Projects/AVRISP/Lib/PDITarget.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/Projects/AVRISP/Lib/PDITarget.c b/Projects/AVRISP/Lib/PDITarget.c
index 7b35a33360..a0bbf7dfa1 100644
--- a/Projects/AVRISP/Lib/PDITarget.c
+++ b/Projects/AVRISP/Lib/PDITarget.c
@@ -98,14 +98,16 @@ uint8_t PDITarget_ReceiveByte(void)
 	// One Start Bit
 	while (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK);
 	  TOGGLE_PDI_CLOCK;
-		
+
+	TOGGLE_PDI_CLOCK;
+	
 	// Eight Data Bits
 	for (uint8_t i = 0; i < 8; i++)
 	{
-		if (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK)
-			ReceivedByte |= 0x01;
+		if (!(PDIDATA_LINE_PIN & PDIDATA_LINE_MASK))
+			ReceivedByte |= 0x80;
 
-		ReceivedByte <<= 1;
+		ReceivedByte >>= 1;
 
 		TOGGLE_PDI_CLOCK;	
 	}