aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP-MKII/Lib/ISP
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-01-22 17:48:06 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-01-22 17:48:06 +0000
commit26017b68b0632c91e71eb29e87ca94670425e081 (patch)
tree111734f4a05e27e4cfb33779ab8d949388aaee4c /Projects/AVRISP-MKII/Lib/ISP
parentef44b8c036daf4806a369dfdcd5adf72cf85b824 (diff)
downloadlufa-26017b68b0632c91e71eb29e87ca94670425e081.tar.gz
lufa-26017b68b0632c91e71eb29e87ca94670425e081.tar.bz2
lufa-26017b68b0632c91e71eb29e87ca94670425e081.zip
Changed AVRISP-MKII project to use the Watchdog interrupt for command timeouts, to reduce CPU usage and free timer 0 for other uses in the future.
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/ISP')
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c10
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c10
2 files changed, 10 insertions, 10 deletions
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
index 9a732dea2..27e1cc96c 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
@@ -68,15 +68,14 @@ void ISPProtocol_EnterISPMode(void)
ISPProtocol_DelayMS(Enter_ISP_Params.ExecutionDelayMS);
ISPTarget_EnableTargetISP();
+ ISPTarget_ChangeTargetResetLine(true);
+
/* Continuously attempt to synchronize with the target until either the number of attempts specified
* by the host has exceeded, or the the device sends back the expected response values */
- while (Enter_ISP_Params.SynchLoops-- && (ResponseStatus != STATUS_CMD_OK) && TimeoutTicksRemaining)
+ while (Enter_ISP_Params.SynchLoops-- && (ResponseStatus != STATUS_CMD_OK) && !(TimeoutExpired))
{
uint8_t ResponseBytes[4];
- ISPTarget_ChangeTargetResetLine(true);
- ISPProtocol_DelayMS(Enter_ISP_Params.PinStabDelayMS);
-
for (uint8_t RByte = 0; RByte < sizeof(ResponseBytes); RByte++)
{
ISPProtocol_DelayMS(Enter_ISP_Params.ByteDelay);
@@ -92,6 +91,7 @@ void ISPProtocol_EnterISPMode(void)
{
ISPTarget_ChangeTargetResetLine(false);
ISPProtocol_DelayMS(Enter_ISP_Params.PinStabDelayMS);
+ ISPTarget_ChangeTargetResetLine(true);
}
}
@@ -509,7 +509,7 @@ void ISPProtocol_SPIMulti(void)
*/
void ISPProtocol_DelayMS(uint8_t DelayMS)
{
- while (DelayMS-- && TimeoutTicksRemaining)
+ while (DelayMS-- && !(TimeoutExpired))
_delay_ms(1);
}
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
index 624d59172..88b33fc65 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
@@ -250,7 +250,7 @@ uint8_t ISPTarget_TransferSoftSPIByte(const uint8_t Byte)
TCNT1 = 0;
TCCR1B = ((1 << WGM12) | (1 << CS11));
- while (SoftSPI_BitsRemaining && TimeoutTicksRemaining);
+ while (SoftSPI_BitsRemaining && !(TimeoutExpired));
TCCR1B = 0;
return SoftSPI_Data;
@@ -292,9 +292,9 @@ uint8_t ISPTarget_WaitWhileTargetBusy(void)
ISPTarget_SendByte(0x00);
ISPTarget_SendByte(0x00);
}
- while ((ISPTarget_ReceiveByte() & 0x01) && TimeoutTicksRemaining);
+ while ((ISPTarget_ReceiveByte() & 0x01) && !(TimeoutExpired));
- return TimeoutTicksRemaining ? STATUS_CMD_OK : STATUS_RDY_BSY_TOUT;
+ return (TimeoutExpired) ? STATUS_RDY_BSY_TOUT : STATUS_CMD_OK;
}
/** Sends a low-level LOAD EXTENDED ADDRESS command to the target, for addressing of memory beyond the
@@ -344,9 +344,9 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode,
ISPTarget_SendByte(PollAddress >> 8);
ISPTarget_SendByte(PollAddress & 0xFF);
}
- while ((ISPTarget_TransferByte(0x00) == PollValue) && TimeoutTicksRemaining);
+ while ((ISPTarget_TransferByte(0x00) == PollValue) && !(TimeoutExpired));
- if (!(TimeoutTicksRemaining))
+ if (TimeoutExpired)
ProgrammingStatus = STATUS_CMD_TOUT;
break;