projects
/
pub
/
USBasp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
8b75659
)
Fixed AVRISP project timeouts not checking for the correct timeout period (thanks...
author
Dean Camera
<dean@fourwalledcubicle.com>
Sun, 20 Dec 2009 22:33:48 +0000
(22:33 +0000)
committer
Dean Camera
<dean@fourwalledcubicle.com>
Sun, 20 Dec 2009 22:33:48 +0000
(22:33 +0000)
LUFA/ManPages/ChangeLog.txt
patch
|
blob
|
blame
|
history
Projects/AVRISP/Lib/ISPTarget.c
patch
|
blob
|
blame
|
history
Projects/AVRISP/Lib/NVMTarget.c
patch
|
blob
|
blame
|
history
Projects/AVRISP/Lib/PDITarget.c
patch
|
blob
|
blame
|
history
Projects/AVRISP/Lib/V2Protocol.h
patch
|
blob
|
blame
|
history
Projects/AVRISP/makefile
patch
|
blob
|
blame
|
history
diff --git
a/LUFA/ManPages/ChangeLog.txt
b/LUFA/ManPages/ChangeLog.txt
index
f28ed47
..
f046a1f
100644
(file)
--- a/
LUFA/ManPages/ChangeLog.txt
+++ b/
LUFA/ManPages/ChangeLog.txt
@@
-68,6
+68,7
@@
* - Fixed USB_CurrentMode not being reset to USB_MODE_NONE when the USB interface is shut down and both Host and Device modes can be
\r
* used (thanks to Daniel Levy)
\r
* - Fixed TeensyHID bootloader not enumerating to the host correctly
\r
* - Fixed USB_CurrentMode not being reset to USB_MODE_NONE when the USB interface is shut down and both Host and Device modes can be
\r
* used (thanks to Daniel Levy)
\r
* - Fixed TeensyHID bootloader not enumerating to the host correctly
\r
+ * - Fixed AVRISP project timeouts not checking for the correct timeout period (thanks to Carl Ott)
\r
*
\r
* \section Sec_ChangeLog091122 Version 091122
\r
*
\r
*
\r
* \section Sec_ChangeLog091122 Version 091122
\r
*
\r
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
diff --git
a/Projects/AVRISP/Lib/NVMTarget.c
b/Projects/AVRISP/Lib/NVMTarget.c
index
00312d5
..
adf213b
100644
(file)
--- a/
Projects/AVRISP/Lib/NVMTarget.c
+++ b/
Projects/AVRISP/Lib/NVMTarget.c
@@
-72,9
+72,12
@@
void NVMTarget_SendAddress(const uint32_t AbsoluteAddress)
bool NVMTarget_WaitWhileNVMControllerBusy(void)
\r
{
\r
TCNT0 = 0;
\r
bool NVMTarget_WaitWhileNVMControllerBusy(void)
\r
{
\r
TCNT0 = 0;
\r
-
\r
+ TIFR0 = (1 << OCF1A);
\r
+
\r
+ uint8_t TimeoutMS = PDI_NVM_TIMEOUT_MS;
\r
+
\r
/* Poll the NVM STATUS register while the NVM controller is busy */
\r
/* Poll the NVM STATUS register while the NVM controller is busy */
\r
- while (T
CNT0 < NVM_BUSY_TIMEOUT_
MS)
\r
+ while (T
imeout
MS)
\r
{
\r
/* Send a LDS command to read the NVM STATUS register to check the BUSY flag */
\r
PDITarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_4BYTES << 2));
\r
{
\r
/* Send a LDS command to read the NVM STATUS register to check the BUSY flag */
\r
PDITarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_4BYTES << 2));
\r
@@
-83,6
+86,12
@@
bool NVMTarget_WaitWhileNVMControllerBusy(void)
/* Check to see if the BUSY flag is still set */
\r
if (!(PDITarget_ReceiveByte() & (1 << 7)))
\r
return true;
\r
/* Check to see if the BUSY flag is still set */
\r
if (!(PDITarget_ReceiveByte() & (1 << 7)))
\r
return true;
\r
+
\r
+ if (TIFR0 & (1 << OCF1A))
\r
+ {
\r
+ TIFR0 = (1 << OCF1A);
\r
+ TimeoutMS--;
\r
+ }
\r
}
\r
\r
return false;
\r
}
\r
\r
return false;
\r
diff --git
a/Projects/AVRISP/Lib/PDITarget.c
b/Projects/AVRISP/Lib/PDITarget.c
index
df01497
..
29bb339
100644
(file)
--- a/
Projects/AVRISP/Lib/PDITarget.c
+++ b/
Projects/AVRISP/Lib/PDITarget.c
@@
-311,14
+311,23
@@
void PDITarget_SendBreak(void)
bool PDITarget_WaitWhileNVMBusBusy(void)
\r
{
\r
TCNT0 = 0;
\r
bool PDITarget_WaitWhileNVMBusBusy(void)
\r
{
\r
TCNT0 = 0;
\r
-
\r
+ TIFR0 = (1 << OCF1A);
\r
+
\r
+ uint8_t TimeoutMS = PDI_NVM_TIMEOUT_MS;
\r
+
\r
/* Poll the STATUS register to check to see if NVM access has been enabled */
\r
/* Poll the STATUS register to check to see if NVM access has been enabled */
\r
- while (T
CNT0 < PDI_NVM_TIMEOUT_
MS)
\r
+ while (T
imeout
MS)
\r
{
\r
/* Send the LDCS command to read the PDI STATUS register to see the NVM bus is active */
\r
PDITarget_SendByte(PDI_CMD_LDCS | PDI_STATUS_REG);
\r
if (PDITarget_ReceiveByte() & PDI_STATUS_NVM)
\r
return true;
\r
{
\r
/* Send the LDCS command to read the PDI STATUS register to see the NVM bus is active */
\r
PDITarget_SendByte(PDI_CMD_LDCS | PDI_STATUS_REG);
\r
if (PDITarget_ReceiveByte() & PDI_STATUS_NVM)
\r
return true;
\r
+
\r
+ if (TIFR0 & (1 << OCF1A))
\r
+ {
\r
+ TIFR0 = (1 << OCF1A);
\r
+ TimeoutMS--;
\r
+ }
\r
}
\r
\r
return false;
\r
}
\r
\r
return false;
\r
diff --git
a/Projects/AVRISP/Lib/V2Protocol.h
b/Projects/AVRISP/Lib/V2Protocol.h
index
5f996ea
..
1777e0f
100644
(file)
--- a/
Projects/AVRISP/Lib/V2Protocol.h
+++ b/
Projects/AVRISP/Lib/V2Protocol.h
@@
-70,7
+70,16
@@
static inline void V2Protocol_DelayMS(uint8_t DelayMS)
\r
{
\r
TCNT0 = 0;
\r
static inline void V2Protocol_DelayMS(uint8_t DelayMS)
\r
{
\r
TCNT0 = 0;
\r
- while (TCNT0 < DelayMS);
\r
+ TIFR0 = (1 << OCF1A);
\r
+
\r
+ while (DelayMS)
\r
+ {
\r
+ if (TIFR0 & (1 << OCF1A))
\r
+ {
\r
+ TIFR0 = (1 << OCF1A);
\r
+ DelayMS--;
\r
+ }
\r
+ }
\r
}
\r
/* External Variables: */
\r
}
\r
/* External Variables: */
\r
diff --git
a/Projects/AVRISP/makefile
b/Projects/AVRISP/makefile
index
23e27c5
..
2b6a1e8
100644
(file)
--- a/
Projects/AVRISP/makefile
+++ b/
Projects/AVRISP/makefile
@@
-66,7
+66,7
@@
MCU = at90usb1287
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
\r
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
\r
# "Board" inside the application directory.
\r
# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
\r
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
\r
# "Board" inside the application directory.
\r
-BOARD =
XPLAIN
\r
+BOARD =
USBKEY
\r
\r
\r
# Processor frequency.
\r
\r
\r
# Processor frequency.
\r