mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Add even parity bit to the software USART framing in the AVRISP project's PDI programming code.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user