*/\r
void PDITarget_SendByte(uint8_t Byte)\r
{\r
+ uint8_t LogicOneBits = 0;\r
+\r
+ // One Start Bit\r
PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;\r
\r
TOGGLE_PDI_CLOCK;\r
-\r
+ \r
+ // Eight Data Bits\r
for (uint8_t i = 0; i < 8; i++)\r
{\r
if (Byte & 0x01)\r
- PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;\r
+ {\r
+ PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;\r
+ LogicOneBits++;\r
+ }\r
else\r
- PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;\r
- \r
+ {\r
+ PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;\r
+ }\r
+ \r
Byte >>= 1;\r
\r
TOGGLE_PDI_CLOCK;\r
}\r
\r
- PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;\r
+ // Even Parity Bit\r
+ if (LogicOneBits & 0x01)\r
+ PDIDATA_LINE_PORT &= ~PDIDATA_LINE_MASK;\r
+ else\r
+ PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;\r
+\r
+ TOGGLE_PDI_CLOCK;\r
\r
+ // Two Stop Bits\r
+ PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;\r
+ \r
TOGGLE_PDI_CLOCK;\r
TOGGLE_PDI_CLOCK;\r
}\r
\r
PDIDATA_LINE_DDR &= ~PDIDATA_LINE_MASK;\r
\r
+ // One Start Bit\r
while (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK);\r
TOGGLE_PDI_CLOCK;\r
- \r
+ \r
+ // Eight Data Bits\r
for (uint8_t i = 0; i < 8; i++)\r
{\r
if (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK)\r
TOGGLE_PDI_CLOCK; \r
}\r
\r
+ // Even Parity Bit (discarded)\r
+ TOGGLE_PDI_CLOCK;\r
+\r
+ // Two Stop Bits\r
TOGGLE_PDI_CLOCK;\r
TOGGLE_PDI_CLOCK;\r
\r