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
2 changed files with 33 additions and 7 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue