Change AVRISP project's timeout to be interrupt based again, but make the interrupt...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XPROGTarget.c
index e75adbe..228a895 100644 (file)
@@ -328,15 +328,7 @@ uint8_t XPROGTarget_ReceiveByte(void)
 \r
 #if defined(XPROG_VIA_HARDWARE_USART)\r
        /* Wait until a byte has been received before reading */\r
-       while (!(UCSR1A & (1 << RXC1)) && TimeoutMSRemaining)\r
-       {\r
-               /* Manage software timeout */\r
-               if (TIFR0 & (1 << OCF0A))\r
-               {\r
-                       TIFR0 |= (1 << OCF0A);\r
-                       TimeoutMSRemaining--;\r
-               }       \r
-       }\r
+       while (!(UCSR1A & (1 << RXC1)) && TimeoutMSRemaining);\r
        \r
        if (TimeoutMSRemaining)\r
          TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
@@ -345,15 +337,7 @@ uint8_t XPROGTarget_ReceiveByte(void)
 #else\r
        /* Wait until a byte has been received before reading */\r
        SoftUSART_BitCount = BITS_IN_USART_FRAME;\r
-       while (SoftUSART_BitCount && TimeoutMSRemaining)\r
-       {\r
-               /* Manage software timeout */\r
-               if (TIFR0 & (1 << OCF0A))\r
-               {\r
-                       TIFR0 |= (1 << OCF0A);\r
-                       TimeoutMSRemaining--;\r
-               }\r
-       }\r
+       while (SoftUSART_BitCount && TimeoutMSRemaining);\r
 \r
        if (TimeoutMSRemaining)\r
          TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
@@ -402,14 +386,7 @@ static void XPROGTarget_SetTxMode(void)
                \r
        IsSending = true;\r
 #else\r
-       while (SoftUSART_BitCount && TimeoutMSRemaining)\r
-       {       \r
-               if (TIFR0 & (1 << OCF0A))\r
-               {\r
-                       TIFR0 |= (1 << OCF0A);\r
-                       TimeoutMSRemaining--;\r
-               }\r
-       }\r
+       while (SoftUSART_BitCount && TimeoutMSRemaining);\r
        \r
        /* Wait for a full cycle of the clock */\r
        SoftUSART_Data     = 0x0001;\r
@@ -443,14 +420,7 @@ static void XPROGTarget_SetRxMode(void)
        DDRD   &= ~(1 << 3);\r
        PORTD  &= ~(1 << 3);\r
 #else\r
-       while (SoftUSART_BitCount && TimeoutMSRemaining)\r
-       {       \r
-               if (TIFR0 & (1 << OCF0A))\r
-               {\r
-                       TIFR0 |= (1 << OCF0A);\r
-                       TimeoutMSRemaining--;\r
-               }\r
-       }\r
+       while (SoftUSART_BitCount && TimeoutMSRemaining);\r
 \r
        if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)\r
        {\r
@@ -458,15 +428,7 @@ static void XPROGTarget_SetRxMode(void)
                BITBANG_PDIDATA_PORT &= ~BITBANG_PDIDATA_MASK;\r
 \r
                /* Wait until DATA line has been pulled up to idle by the target */\r
-               while (!(BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK) && TimeoutMSRemaining)\r
-               {\r
-                       /* Manage software timeout */\r
-                       if (TIFR0 & (1 << OCF0A))\r
-                       {\r
-                               TIFR0 |= (1 << OCF0A);\r
-                               TimeoutMSRemaining--;\r
-                       }\r
-               }\r
+               while (!(BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK) && TimeoutMSRemaining);\r
        }\r
        else\r
        {\r
@@ -474,15 +436,7 @@ static void XPROGTarget_SetRxMode(void)
                BITBANG_TPIDATA_PORT &= ~BITBANG_TPIDATA_MASK;\r
 \r
                /* Wait until DATA line has been pulled up to idle by the target */\r
-               while (!(BITBANG_TPIDATA_PIN & BITBANG_TPIDATA_MASK) && TimeoutMSRemaining)\r
-               {\r
-                       /* Manage software timeout */\r
-                       if (TIFR0 & (1 << OCF0A))\r
-                       {\r
-                               TIFR0 |= (1 << OCF0A);\r
-                               TimeoutMSRemaining--;\r
-                       }\r
-               }       \r
+               while (!(BITBANG_TPIDATA_PIN & BITBANG_TPIDATA_MASK) && TimeoutMSRemaining);\r
        }       \r
 #endif\r
 \r