X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/cb779e3d7d32d7c43e0a45bb526de0a04135b0c7..a8b66f318dda3cc18dfcedaa3af3d01ab68b82e8:/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c index f0ef2b652..ae292a0d4 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c @@ -39,7 +39,7 @@ #if defined(ENABLE_XPROG_PROTOCOL) || defined(__DOXYGEN__) /** Flag to indicate if the USART is currently in Tx or Rx mode. */ -volatile bool IsSending; +bool IsSending; /** Enables the target's PDI interface, holding the target in reset until PDI mode is exited. */ void XPROGTarget_EnableTargetPDI(void) @@ -55,13 +55,13 @@ void XPROGTarget_EnableTargetPDI(void) _delay_us(1); /* Set up the synchronous USART for XMEGA communications - 8 data bits, even parity, 2 stop bits */ - UBRR1 = (F_CPU / XPROG_HARDWARE_SPEED); + UBRR1 = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1); UCSR1B = (1 << TXEN1); UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1); - /* Send two BREAKs of 12 bits each to enable PDI interface (need at least 16 idle bits) */ - XPROGTarget_SendBreak(); - XPROGTarget_SendBreak(); + /* Send two IDLEs of 12 bits each to enable PDI interface (need at least 16 idle bits) */ + XPROGTarget_SendIdle(); + XPROGTarget_SendIdle(); } /** Enables the target's TPI interface, holding the target in reset until TPI mode is exited. */ @@ -79,13 +79,13 @@ void XPROGTarget_EnableTargetTPI(void) DDRD &= ~(1 << 2); /* Set up the synchronous USART for TINY communications - 8 data bits, even parity, 2 stop bits */ - UBRR1 = (F_CPU / XPROG_HARDWARE_SPEED); + UBRR1 = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1); UCSR1B = (1 << TXEN1); UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1); - /* Send two BREAKs of 12 bits each to enable TPI interface (need at least 16 idle bits) */ - XPROGTarget_SendBreak(); - XPROGTarget_SendBreak(); + /* Send two IDLEs of 12 bits each to enable TPI interface (need at least 16 idle bits) */ + XPROGTarget_SendIdle(); + XPROGTarget_SendIdle(); } /** Disables the target's PDI interface, exits programming mode and starts the target's application. */ @@ -115,10 +115,10 @@ void XPROGTarget_DisableTargetTPI(void) UCSR1B = 0; UCSR1C = 0; - /* Set all USART lines as input, tristate */ + /* Set all USART lines as inputs, tristate */ DDRD &= ~((1 << 5) | (1 << 3)); PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2)); - + /* Tristate target /RESET line */ AUX_LINE_DDR &= ~AUX_LINE_MASK; AUX_LINE_PORT &= ~AUX_LINE_MASK; @@ -156,14 +156,14 @@ uint8_t XPROGTarget_ReceiveByte(void) return UDR1; } -/** Sends a BREAK via the USART to the attached target, consisting of a full frame of idle bits. */ -void XPROGTarget_SendBreak(void) +/** Sends an IDLE via the USART to the attached target, consisting of a full frame of idle bits. */ +void XPROGTarget_SendIdle(void) { /* Switch to Tx mode if currently in Rx mode */ if (!(IsSending)) XPROGTarget_SetTxMode(); - - /* Need to do nothing for a full frame to send a BREAK */ + + /* Need to do nothing for a full frame to send an IDLE */ for (uint8_t i = 0; i < BITS_IN_USART_FRAME; i++) { /* Wait for a full cycle of the clock */