Switch back to C based timeout ISR in the AVRISP project - assembly version was faili...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XPROGTarget.c
index 228a895..6adb24f 100644 (file)
@@ -165,6 +165,10 @@ void XPROGTarget_EnableTargetPDI(void)
        BITBANG_PDIDATA_DDR  |= BITBANG_PDIDATA_MASK;\r
        BITBANG_PDICLOCK_DDR |= BITBANG_PDICLOCK_MASK;\r
        \r
+       /* Set DATA line low for at least 90ns to ensure that the device is ready for PDI mode to be entered */\r
+       BITBANG_PDIDATA_PORT &= ~BITBANG_PDIDATA_MASK;\r
+       _delay_us(1);\r
+\r
        /* Set DATA line high for at least 90ns to disable /RESET functionality */\r
        BITBANG_PDIDATA_PORT |= BITBANG_PDIDATA_MASK;\r
        _delay_us(1);\r
@@ -314,6 +318,9 @@ void XPROGTarget_SendByte(const uint8_t Byte)
        SoftUSART_Data     = NewUSARTData;\r
        SoftUSART_BitCount = BITS_IN_USART_FRAME;\r
 #endif\r
+\r
+    if (TimeoutMSRemaining)\r
+         TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
 }\r
 \r
 /** Receives a byte via the software USART, blocking until data is received.\r
@@ -369,6 +376,9 @@ void XPROGTarget_SendBreak(void)
        SoftUSART_Data     = 0x0FFF;\r
        SoftUSART_BitCount = BITS_IN_USART_FRAME;\r
 #endif\r
+\r
+    if (TimeoutMSRemaining)\r
+         TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
 }\r
 \r
 static void XPROGTarget_SetTxMode(void)\r
@@ -405,6 +415,9 @@ static void XPROGTarget_SetTxMode(void)
        }\r
 #endif\r
 \r
+    if (TimeoutMSRemaining)\r
+         TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
+\r
        IsSending = true;\r
 }\r
 \r