forked from mfulz_github/qmk_firmware
Add even parity bit to the software USART framing in the AVRISP project's PDI programming code.
This commit is contained in:
parent
9c8ed168e5
commit
1e3513ed70
|
@ -39,6 +39,8 @@
|
||||||
* with the rest of the library errorcodes
|
* 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,
|
* - 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)
|
* 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
|
||||||
*
|
*
|
||||||
* <b>Fixed:</b>
|
* <b>Fixed:</b>
|
||||||
* - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver
|
* - 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 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
|
* - 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
|
* 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
|
* \section Sec_ChangeLog091122 Version 091122
|
||||||
*
|
*
|
||||||
|
|
|
@ -45,24 +45,42 @@
|
||||||
*/
|
*/
|
||||||
void PDITarget_SendByte(uint8_t Byte)
|
void PDITarget_SendByte(uint8_t Byte)
|
||||||
{
|
{
|
||||||
|
uint8_t LogicOneBits = 0;
|
||||||
|
|
||||||
|
// One Start Bit
|
||||||
PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;
|
PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;
|
||||||
|
|
||||||
TOGGLE_PDI_CLOCK;
|
TOGGLE_PDI_CLOCK;
|
||||||
|
|
||||||
|
// Eight Data Bits
|
||||||
for (uint8_t i = 0; i < 8; i++)
|
for (uint8_t i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
if (Byte & 0x01)
|
if (Byte & 0x01)
|
||||||
PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;
|
{
|
||||||
|
PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;
|
||||||
|
LogicOneBits++;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;
|
{
|
||||||
|
PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
Byte >>= 1;
|
Byte >>= 1;
|
||||||
|
|
||||||
TOGGLE_PDI_CLOCK;
|
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;
|
||||||
TOGGLE_PDI_CLOCK;
|
TOGGLE_PDI_CLOCK;
|
||||||
}
|
}
|
||||||
|
@ -77,9 +95,11 @@ uint8_t PDITarget_ReceiveByte(void)
|
||||||
|
|
||||||
PDIDATA_LINE_DDR &= ~PDIDATA_LINE_MASK;
|
PDIDATA_LINE_DDR &= ~PDIDATA_LINE_MASK;
|
||||||
|
|
||||||
|
// One Start Bit
|
||||||
while (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK);
|
while (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK);
|
||||||
TOGGLE_PDI_CLOCK;
|
TOGGLE_PDI_CLOCK;
|
||||||
|
|
||||||
|
// Eight Data Bits
|
||||||
for (uint8_t i = 0; i < 8; i++)
|
for (uint8_t i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
if (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK)
|
if (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK)
|
||||||
|
@ -90,6 +110,10 @@ uint8_t PDITarget_ReceiveByte(void)
|
||||||
TOGGLE_PDI_CLOCK;
|
TOGGLE_PDI_CLOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Even Parity Bit (discarded)
|
||||||
|
TOGGLE_PDI_CLOCK;
|
||||||
|
|
||||||
|
// Two Stop Bits
|
||||||
TOGGLE_PDI_CLOCK;
|
TOGGLE_PDI_CLOCK;
|
||||||
TOGGLE_PDI_CLOCK;
|
TOGGLE_PDI_CLOCK;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue