Finished preliminary AVRISP project - all V2 protocol commands now work correctly...
[pub/USBasp.git] / Projects / Incomplete / AVRISP / Lib / V2ProtocolTarget.c
index f9b4427..e23885b 100644 (file)
@@ -40,7 +40,7 @@ uint32_t CurrentAddress;
 \r
 uint8_t V2Protocol_GetSPIPrescalerMask(void)\r
 {\r
-       static const uint8_t SPIMaskFromSCKDuration[] =\r
+       static const uint8_t SPIMaskFromSCKDuration[TOTAL_PROGRAMMING_SPEEDS] =\r
        {\r
                #if (F_CPU == 8000000)\r
                SPI_SPEED_FCPU_DIV_2,\r
@@ -76,14 +76,8 @@ void V2Protocol_ChangeTargetResetLine(bool ResetTarget)
        }\r
 }\r
 \r
-void V2Protocol_DelayMS(uint8_t MS)\r
-{\r
-       TCNT0  = 0;\r
-       while (TCNT0 < MS);\r
-}\r
-\r
 uint8_t V2Protocol_WaitForProgComplete(uint8_t ProgrammingMode, uint16_t PollAddress, uint8_t PollValue,\r
-                                       uint8_t DelayMS, bool IsFlashMemory, uint8_t ReadMemCommand)\r
+                                       uint8_t DelayMS, uint8_t ReadMemCommand)\r
 {\r
        uint8_t ProgrammingStatus = STATUS_CMD_OK;\r
 \r
@@ -96,13 +90,7 @@ uint8_t V2Protocol_WaitForProgComplete(uint8_t ProgrammingMode, uint16_t PollAdd
                        break;\r
                case PROG_MODE_WORD_VALUE_MASK:\r
                case PROG_MODE_PAGED_VALUE_MASK:\r
-                       if (IsFlashMemory && (PollAddress & 0x01))\r
-                       {\r
-                               ReadMemCommand |= READ_WRITE_ODD_BYTE_MASK;\r
-                               PollAddress >>= 1;\r
-                       }\r
-\r
-                       TCNT0  = 0;\r
+                       TCNT0 = 0;\r
 \r
                        do\r
                        {\r
@@ -119,6 +107,7 @@ uint8_t V2Protocol_WaitForProgComplete(uint8_t ProgrammingMode, uint16_t PollAdd
                case PROG_MODE_WORD_READYBUSY_MASK:\r
                case PROG_MODE_PAGED_READYBUSY_MASK:\r
                        ProgrammingStatus = V2Protocol_WaitWhileTargetBusy();\r
+                       break;\r
        }\r
 \r
        return ProgrammingStatus;\r
@@ -126,9 +115,7 @@ uint8_t V2Protocol_WaitForProgComplete(uint8_t ProgrammingMode, uint16_t PollAdd
 \r
 uint8_t V2Protocol_WaitWhileTargetBusy(void)\r
 {\r
-       uint8_t ResponseByte;\r
-       \r
-       TCNT0  = 0;\r
+       TCNT0 = 0;\r
        \r
        do\r
        {\r
@@ -136,9 +123,8 @@ uint8_t V2Protocol_WaitWhileTargetBusy(void)
                SPI_SendByte(0x00);\r
 \r
                SPI_SendByte(0x00);\r
-               ResponseByte = SPI_ReceiveByte();\r
        }\r
-       while ((ResponseByte & 0x01) && (TCNT0 < TARGET_BUSY_TIMEOUT_MS));\r
+       while ((SPI_ReceiveByte() & 0x01) && (TCNT0 < TARGET_BUSY_TIMEOUT_MS));\r
 \r
        if (TCNT0 >= TARGET_BUSY_TIMEOUT_MS)\r
          return STATUS_RDY_BSY_TOUT;\r