projects
/
pub
/
lufa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed AVRISP project timeouts not checking for the correct timeout period (thanks...
[pub/lufa.git]
/
Projects
/
AVRISP
/
Lib
/
ISPTarget.c
diff --git
a/Projects/AVRISP/Lib/ISPTarget.c
b/Projects/AVRISP/Lib/ISPTarget.c
index
fbe8ad3
..
ce364c6
100644
(file)
--- a/
Projects/AVRISP/Lib/ISPTarget.c
+++ b/
Projects/AVRISP/Lib/ISPTarget.c
@@
-123,16
+123,25
@@
uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1
case PROG_MODE_WORD_VALUE_MASK:
\r
case PROG_MODE_PAGED_VALUE_MASK:
\r
TCNT0 = 0;
\r
case PROG_MODE_WORD_VALUE_MASK:
\r
case PROG_MODE_PAGED_VALUE_MASK:
\r
TCNT0 = 0;
\r
+ TIFR0 = (1 << OCF1A);
\r
+
\r
+ uint8_t TimeoutMS = TARGET_BUSY_TIMEOUT_MS;
\r
\r
do
\r
{
\r
SPI_SendByte(ReadMemCommand);
\r
SPI_SendByte(PollAddress >> 8);
\r
\r
do
\r
{
\r
SPI_SendByte(ReadMemCommand);
\r
SPI_SendByte(PollAddress >> 8);
\r
- SPI_SendByte(PollAddress & 0xFF);
\r
+ SPI_SendByte(PollAddress & 0xFF);
\r
+
\r
+ if (TIFR0 & (1 << OCF1A))
\r
+ {
\r
+ TIFR0 = (1 << OCF1A);
\r
+ TimeoutMS--;
\r
+ }
\r
}
\r
}
\r
- while ((SPI_TransferByte(0x00) != PollValue) &&
(TCNT0 < TARGET_BUSY_TIMEOUT_MS)
);
\r
+ while ((SPI_TransferByte(0x00) != PollValue) &&
TimeoutMS
);
\r
\r
\r
- if (
TCNT0 >= TARGET_BUSY_TIMEOUT_MS
)
\r
+ if (
!(TimeoutMS)
)
\r
ProgrammingStatus = STATUS_CMD_TOUT;
\r
\r
break;
\r
ProgrammingStatus = STATUS_CMD_TOUT;
\r
\r
break;
\r
@@
-153,6
+162,9
@@
uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1
uint8_t ISPTarget_WaitWhileTargetBusy(void)
\r
{
\r
TCNT0 = 0;
\r
uint8_t ISPTarget_WaitWhileTargetBusy(void)
\r
{
\r
TCNT0 = 0;
\r
+ TIFR0 = (1 << OCF1A);
\r
+
\r
+ uint8_t TimeoutMS = TARGET_BUSY_TIMEOUT_MS;
\r
\r
do
\r
{
\r
\r
do
\r
{
\r
@@
-160,10
+172,16
@@
uint8_t ISPTarget_WaitWhileTargetBusy(void)
SPI_SendByte(0x00);
\r
\r
SPI_SendByte(0x00);
\r
SPI_SendByte(0x00);
\r
\r
SPI_SendByte(0x00);
\r
+
\r
+ if (TIFR0 & (1 << OCF1A))
\r
+ {
\r
+ TIFR0 = (1 << OCF1A);
\r
+ TimeoutMS--;
\r
+ }
\r
}
\r
}
\r
- while ((SPI_ReceiveByte() & 0x01) &&
(TCNT0 < TARGET_BUSY_TIMEOUT_MS)
);
\r
+ while ((SPI_ReceiveByte() & 0x01) &&
TimeoutMS
);
\r
\r
\r
- if (
TCNT0 >= TARGET_BUSY_TIMEOUT_MS
)
\r
+ if (
!(TimeoutMS)
)
\r
return STATUS_RDY_BSY_TOUT;
\r
else
\r
return STATUS_CMD_OK;
\r
return STATUS_RDY_BSY_TOUT;
\r
else
\r
return STATUS_CMD_OK;
\r