projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix AVRISP PDI protocol - make sure inverted masks have the appropriate parenthesis...
[pub/USBasp.git]
/
Projects
/
AVRISP
/
Lib
/
PDITarget.c
diff --git
a/Projects/AVRISP/Lib/PDITarget.c
b/Projects/AVRISP/Lib/PDITarget.c
index
9a94e9a
..
d012a1b
100644
(file)
--- a/
Projects/AVRISP/Lib/PDITarget.c
+++ b/
Projects/AVRISP/Lib/PDITarget.c
@@
-172,9
+172,9
@@
void PDITarget_EnableTargetPDI(void)
/* Set up the synchronous USART for XMEGA communications -
\r
8 data bits, even parity, 2 stop bits */
\r
UBRR1 = 10;
\r
/* Set up the synchronous USART for XMEGA communications -
\r
8 data bits, even parity, 2 stop bits */
\r
UBRR1 = 10;
\r
- UCSR1B = (1 << TXEN1);
\r
UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
\r
\r
UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
\r
\r
+ /* Send two BREAKs of 12 bits each to enable PDI interface (need at least 16 idle bits) */
\r
PDITarget_SendBreak();
\r
PDITarget_SendBreak();
\r
}
\r
PDITarget_SendBreak();
\r
PDITarget_SendBreak();
\r
}
\r
@@
-186,7
+186,7
@@
void PDITarget_DisableTargetPDI(void)
UCSR1C = 0;
\r
\r
/* Set all USART lines as input, tristate */
\r
UCSR1C = 0;
\r
\r
/* Set all USART lines as input, tristate */
\r
- DDRD &= ~(
1 << 5) | (1 << 3
);
\r
+ DDRD &= ~(
(1 << 5) | (1 << 3)
);
\r
PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
\r
}
\r
\r
PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
\r
}
\r
\r
@@
-215,11
+215,14
@@
uint8_t PDITarget_ReceiveByte(void)
void PDITarget_SendBreak(void)
\r
{
\r
UCSR1B &= ~(1 << RXEN1);
\r
void PDITarget_SendBreak(void)
\r
{
\r
UCSR1B &= ~(1 << RXEN1);
\r
- UCSR1B |= (1 << TXEN1);
\r
+ UCSR1B |=
(1 << TXEN1);
\r
\r
\r
- for (uint8_t i = 0; i < BITS_IN_FRAME; i++)
\r
+ for (uint8_t i = 0; i <
=
BITS_IN_FRAME; i++)
\r
{
\r
{
\r
+ /* Wait for rising edge of clock */
\r
while (PIND & (1 << 5));
\r
while (PIND & (1 << 5));
\r
+
\r
+ /* Wait for falling edge of clock */
\r
while (!(PIND & (1 << 5)));
\r
}
\r
}
\r
while (!(PIND & (1 << 5)));
\r
}
\r
}
\r