projects
/
pub
/
lufa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add even parity bit to the software USART framing in the AVRISP project's PDI program...
[pub/lufa.git]
/
Projects
/
AVRISP
/
Lib
/
PDITarget.c
diff --git
a/Projects/AVRISP/Lib/PDITarget.c
b/Projects/AVRISP/Lib/PDITarget.c
index
03dd779
..
7b35a33
100644
(file)
--- a/
Projects/AVRISP/Lib/PDITarget.c
+++ b/
Projects/AVRISP/Lib/PDITarget.c
@@
-45,24
+45,42
@@
*/
\r
void PDITarget_SendByte(uint8_t Byte)
\r
{
\r
*/
\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
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
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
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
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
\r
+ // Two Stop Bits
\r
+ PDIDATA_LINE_PORT |= PDIDATA_LINE_MASK;
\r
+
\r
TOGGLE_PDI_CLOCK;
\r
TOGGLE_PDI_CLOCK;
\r
}
\r
TOGGLE_PDI_CLOCK;
\r
TOGGLE_PDI_CLOCK;
\r
}
\r
@@
-77,9
+95,11
@@
uint8_t PDITarget_ReceiveByte(void)
\r
PDIDATA_LINE_DDR &= ~PDIDATA_LINE_MASK;
\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
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
for (uint8_t i = 0; i < 8; i++)
\r
{
\r
if (PDIDATA_LINE_PIN & PDIDATA_LINE_MASK)
\r
@@
-90,6
+110,10
@@
uint8_t PDITarget_ReceiveByte(void)
TOGGLE_PDI_CLOCK;
\r
}
\r
\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
TOGGLE_PDI_CLOCK;
\r
TOGGLE_PDI_CLOCK;
\r
\r