Make WaitWhileBusy function in the AVRISP project more explicit about how it sends...
authorDean Camera <dean@fourwalledcubicle.com>
Thu, 27 Aug 2009 23:07:53 +0000 (23:07 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Thu, 27 Aug 2009 23:07:53 +0000 (23:07 +0000)
Reduce size of PROGRAM FLASH ISP or PROGRAM EEPROM ISP buffer to 256 bytes to prevent blowing the stack on the smallest USB AVR models.

Projects/AVRISP/Lib/V2Protocol.c
Projects/AVRISP/Lib/V2ProtocolTarget.c

index 248c50d..3a1b78e 100644 (file)
@@ -301,7 +301,7 @@ static void V2Protocol_Command_ProgramMemory(uint8_t V2Command)
                uint8_t  ProgrammingCommands[3];\r
                uint8_t  PollValue1;\r
                uint8_t  PollValue2;\r
                uint8_t  ProgrammingCommands[3];\r
                uint8_t  PollValue1;\r
                uint8_t  PollValue2;\r
-               uint8_t  ProgData[512];\r
+               uint8_t  ProgData[256];\r
        } Write_Memory_Params;\r
        \r
        uint8_t* NextWriteByte = Write_Memory_Params.ProgData;\r
        } Write_Memory_Params;\r
        \r
        uint8_t* NextWriteByte = Write_Memory_Params.ProgData;\r
index d06f065..9c6ccf4 100644 (file)
@@ -161,8 +161,9 @@ uint8_t V2Protocol_WaitWhileTargetBusy(void)
                SPI_SendByte(0x00);\r
 \r
                SPI_SendByte(0x00);\r
                SPI_SendByte(0x00);\r
 \r
                SPI_SendByte(0x00);\r
+               bool DeviceBusy = (SPI_ReceiveByte() & 0x01);\r
        }\r
        }\r
-       while ((SPI_ReceiveByte() & 0x01) && (TCNT0 < TARGET_BUSY_TIMEOUT_MS));\r
+       while (DeviceBusy && (TCNT0 < TARGET_BUSY_TIMEOUT_MS));\r
 \r
        if (TCNT0 >= TARGET_BUSY_TIMEOUT_MS)\r
          return STATUS_RDY_BSY_TOUT;\r
 \r
        if (TCNT0 >= TARGET_BUSY_TIMEOUT_MS)\r
          return STATUS_RDY_BSY_TOUT;\r