Change AVRISP project's timeout to be interrupt based again, but make the interrupt...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / V2Protocol.c
index 431f9c2..63b7294 100644 (file)
@@ -42,6 +42,7 @@ uint32_t CurrentAddress;
 /** Flag to indicate that the next read/write operation must update the device's current address */\r
 bool MustSetAddress;\r
 \r
+\r
 /** Initializes the hardware and software associated with the V2 protocol command handling. */\r
 void V2Protocol_Init(void)\r
 {\r
@@ -55,7 +56,7 @@ void V2Protocol_Init(void)
        /* Millisecond timer initialization for managing the command timeout counter */\r
        OCR0A  = ((F_CPU / 64) / 1000);\r
        TCCR0A = (1 << WGM01);\r
-       TCCR0B = ((1 << CS01) | (1 << CS00));\r
+       TIMSK0 = (1 << OCIE0A);\r
        \r
        V2Params_LoadNonVolatileParamValues();\r
 }\r
@@ -68,7 +69,9 @@ void V2Protocol_ProcessCommand(void)
 {\r
        uint8_t V2Command = Endpoint_Read_Byte();\r
        \r
+       /* Start the timeout management timer */\r
        TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
+       TCCR0B = ((1 << CS01) | (1 << CS00));\r
        \r
        switch (V2Command)\r
        {\r
@@ -129,6 +132,9 @@ void V2Protocol_ProcessCommand(void)
                        V2Protocol_UnknownCommand(V2Command);\r
                        break;\r
        }\r
+       \r
+       /* Disable the timeout management timer */\r
+       TCCR0B = 0;\r
 \r
        Endpoint_WaitUntilReady();\r
        Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);\r