diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 143b5a146c..0daed31877 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -39,6 +39,8 @@ * with the rest of the library errorcodes * - Make MIDI device demos also turn off the on board LEDs if MIDI Note On messages are sent with a velocity of zero, * which some devices use instead of Note Off messages (thanks to Robin Green) + * - The CDC demos are now named "VirtualSerial" instead to indicate the demos' function rather than its implemented USB class, + * to reduce confusion and to be in line with the rest of the LUFA demos * * Fixed: * - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver @@ -56,7 +58,7 @@ * - Fixed TeensyHID bootloader not properly shutting down the USB interface to trigger a disconnection on the host before resetting * - Fixed MassStorageHost Class driver demo not having USB_STREAM_TIMEOUT_MS compile time option set properly to prevent slow * devices from timing out the data pipes - * - Fixed the definition of the Endpoint_BytesInEndpoint() macro for the U4 parts + * - Fixed the definition of the Endpoint_BytesInEndpoint() macro for the U4 series AVR parts * * \section Sec_ChangeLog091122 Version 091122 * diff --git a/Projects/AVRISP/Lib/PDITarget.c b/Projects/AVRISP/Lib/PDITarget.c index 03dd779989..7b35a33360 100644 --- a/Projects/AVRISP/Lib/PDITarget.c +++ b/Projects/AVRISP/Lib/PDITarget.c @@ -45,24 +45,42 @@ */ void PDITarget_SendByte(uint8_t Byte) { + uint8_t LogicOneBits = 0; + + // One Start Bit PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK; TOGGLE_PDI_CLOCK; - + + // Eight Data Bits for (uint8_t i = 0; i < 8; i++) { if (Byte & 0x01) - PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK; + { + PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK; + LogicOneBits++; + } else - PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK; - + { + PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK; + } + Byte >>= 1; TOGGLE_PDI_CLOCK; } - PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK; + // Even Parity Bit + if (LogicOneBits & 0x01) + PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK; + else + PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK; + + TOGGLE_PDI_CLOCK; + // Two Stop Bits + PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK; + TOGGLE_PDI_CLOCK; TOGGLE_PDI_CLOCK; } @@ -77,9 +95,11 @@ uint8_t PDITarget_ReceiveByte(void) PDIDATA_LINE_DDR &= ~PDIDATA_LINE_MASK; + // One Start Bit while (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK); TOGGLE_PDI_CLOCK; - + + // Eight Data Bits for (uint8_t i = 0; i < 8; i++) { if (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK) @@ -90,6 +110,10 @@ uint8_t PDITarget_ReceiveByte(void) TOGGLE_PDI_CLOCK; } + // Even Parity Bit (discarded) + TOGGLE_PDI_CLOCK; + + // Two Stop Bits TOGGLE_PDI_CLOCK; TOGGLE_PDI_CLOCK;