Fixed PDI programming mode in the AVRISP programmer project not exiting programming...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XPROGTarget.c
index 957084c..4ecf033 100644 (file)
@@ -232,33 +232,24 @@ void XPROGTarget_DisableTargetPDI(void)
        XPROGTarget_SetRxMode();\r
 \r
 #if defined(XPROG_VIA_HARDWARE_USART)\r
        XPROGTarget_SetRxMode();\r
 \r
 #if defined(XPROG_VIA_HARDWARE_USART)\r
-       /* Set /RESET high for a one millisecond to ensure target device is restarted */\r
-       PORTD |= (1 << 5);\r
-       _delay_ms(1);\r
-\r
        /* Turn off receiver and transmitter of the USART, clear settings */\r
        /* Turn off receiver and transmitter of the USART, clear settings */\r
-       UCSR1A |= (1 << TXC1) | (1 << RXC1);\r
+       UCSR1A  = ((1 << TXC1) | (1 << RXC1));\r
        UCSR1B  = 0;\r
        UCSR1C  = 0;\r
 \r
        UCSR1B  = 0;\r
        UCSR1C  = 0;\r
 \r
-       /* Set all USART lines as input, tristate */\r
+       /* Make Reset input with pullup to take target out of /RESET, tristate all other pins */\r
        DDRD  &= ~((1 << 5) | (1 << 3));\r
        DDRD  &= ~((1 << 5) | (1 << 3));\r
-       PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));\r
+       PORTD &= ~((1 << 3) | (1 << 2));\r
+       PORTD |=   (1 << 5);\r
 #else\r
        /* Turn off software USART management timer */\r
        TCCR1B = 0;\r
 \r
 #else\r
        /* Turn off software USART management timer */\r
        TCCR1B = 0;\r
 \r
-       /* Set /RESET high for a one millisecond to ensure target device is restarted */\r
-       BITBANG_PDICLOCK_PORT |= BITBANG_PDICLOCK_MASK;\r
-       _delay_ms(1);\r
-\r
-       /* Set DATA and CLOCK lines to inputs */\r
+       /* Make Reset input with pullup to take target out of /RESET, tristate all other pins */\r
        BITBANG_PDIDATA_DDR   &= ~BITBANG_PDIDATA_MASK;\r
        BITBANG_PDICLOCK_DDR  &= ~BITBANG_PDICLOCK_MASK;\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
        BITBANG_PDICLOCK_PORT &= ~BITBANG_PDICLOCK_MASK;        \r
+       BITBANG_PDIDATA_PORT  |=  BITBANG_PDIDATA_MASK;\r
 #endif\r
 }\r
 \r
 #endif\r
 }\r
 \r