-}\r
-\r
-void PDITarget_EnableTargetPDI(void)\r
-{\r
- /* Set DATA and CLOCK lines to outputs */\r
- BITBANG_PDIDATA_DDR |= BITBANG_PDIDATA_MASK;\r
- BITBANG_PDICLOCK_DDR |= BITBANG_PDICLOCK_MASK;\r
- \r
- /* Set DATA line high for 90ns to disable /RESET functionality */\r
- BITBANG_PDIDATA_PORT |= BITBANG_PDIDATA_MASK;\r
- asm volatile ("NOP"::);\r
- asm volatile ("NOP"::);\r
-\r
- /* Fire timer compare ISR every 160 cycles */\r
- OCR0A = 20;\r
- TCCR0A = (1 << WGM01);\r
- TCCR0B = (1 << CS01);\r
- TIMSK0 = (1 << OCIE0A);\r
-}\r
-\r
-void PDITarget_DisableTargetPDI(void)\r
-{\r
- /* Set DATA and CLOCK lines to inputs */\r
- BITBANG_PDIDATA_DDR &= ~BITBANG_PDIDATA_MASK;\r
- BITBANG_PDICLOCK_DDR &= ~BITBANG_PDICLOCK_MASK;\r
- \r
- /* Tristate DATA and CLOCK lines */\r
- BITBANG_PDIDATA_PORT &= ~BITBANG_PDIDATA_MASK;\r
- BITBANG_PDICLOCK_PORT &= ~BITBANG_PDICLOCK_MASK;\r
-\r
- TCCR0B = 0;\r
-}\r
-\r
-void PDITarget_SendByte(uint8_t Byte)\r
-{\r
- bool IsOddBitsSet = false;\r
- \r
- /* Compute Even parity bit */\r
- for (uint8_t i = 0; i < 8; i++)\r