Fixed AVRISP-MKII clone project not starting the target's program automatically after...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XPROGTarget.c
index f0ef2b6..9be78d0 100644 (file)
@@ -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,7 +55,7 @@ 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);
 
@@ -79,7 +79,7 @@ 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);
 
@@ -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;