diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2010-05-02 05:16:34 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2010-05-02 05:16:34 +0000 |
commit | 3d28d53c3e2ae529933283e63a8b05f2ab1ce2be (patch) | |
tree | f395bb297884750d54614b941f2bda0727cc2796 /Projects/AVRISP-MKII/Lib/XPROG | |
parent | 9a1560dc050f79fd189838a87ce623e79ff48677 (diff) | |
download | lufa-3d28d53c3e2ae529933283e63a8b05f2ab1ce2be.tar.gz lufa-3d28d53c3e2ae529933283e63a8b05f2ab1ce2be.tar.bz2 lufa-3d28d53c3e2ae529933283e63a8b05f2ab1ce2be.zip |
Change AVRISP project's timeout to be interrupt based again, but make the interrupt itself interruptable and use a seperate assembly file to hand-optimize the ISR code.
Removed the cast to uint16_t on the set baud rate in the USBtoSerial project, so that the higher >1M baud rates can be selected (thanks to Steffan).
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/XPROG')
-rw-r--r-- | Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c | 14 | ||||
-rw-r--r-- | Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c | 14 | ||||
-rw-r--r-- | Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 58 |
3 files changed, 6 insertions, 80 deletions
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c b/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c index acd6b651c..817f22347 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c @@ -94,13 +94,6 @@ bool TINYNVM_WaitWhileNVMBusBusy(void) TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
return true;
}
-
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
}
return false;
@@ -131,13 +124,6 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void) TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
return true;
}
-
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
}
return false;
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c b/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c index b6b039aa8..1671d29ba 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c @@ -89,13 +89,6 @@ bool XMEGANVM_WaitWhileNVMBusBusy(void) TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
return true;
}
-
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
}
return false;
@@ -127,13 +120,6 @@ bool XMEGANVM_WaitWhileNVMControllerBusy(void) TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
return true;
}
-
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
}
return false;
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c index e75adbe10..228a89546 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c @@ -328,15 +328,7 @@ uint8_t XPROGTarget_ReceiveByte(void) #if defined(XPROG_VIA_HARDWARE_USART)
/* Wait until a byte has been received before reading */
- while (!(UCSR1A & (1 << RXC1)) && TimeoutMSRemaining)
- {
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
- }
+ while (!(UCSR1A & (1 << RXC1)) && TimeoutMSRemaining);
if (TimeoutMSRemaining)
TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
@@ -345,15 +337,7 @@ uint8_t XPROGTarget_ReceiveByte(void) #else
/* Wait until a byte has been received before reading */
SoftUSART_BitCount = BITS_IN_USART_FRAME;
- while (SoftUSART_BitCount && TimeoutMSRemaining)
- {
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
- }
+ while (SoftUSART_BitCount && TimeoutMSRemaining);
if (TimeoutMSRemaining)
TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
@@ -402,14 +386,7 @@ static void XPROGTarget_SetTxMode(void) IsSending = true;
#else
- while (SoftUSART_BitCount && TimeoutMSRemaining)
- {
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
- }
+ while (SoftUSART_BitCount && TimeoutMSRemaining);
/* Wait for a full cycle of the clock */
SoftUSART_Data = 0x0001;
@@ -443,14 +420,7 @@ static void XPROGTarget_SetRxMode(void) DDRD &= ~(1 << 3);
PORTD &= ~(1 << 3);
#else
- while (SoftUSART_BitCount && TimeoutMSRemaining)
- {
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
- }
+ while (SoftUSART_BitCount && TimeoutMSRemaining);
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
{
@@ -458,15 +428,7 @@ static void XPROGTarget_SetRxMode(void) BITBANG_PDIDATA_PORT &= ~BITBANG_PDIDATA_MASK;
/* Wait until DATA line has been pulled up to idle by the target */
- while (!(BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK) && TimeoutMSRemaining)
- {
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
- }
+ while (!(BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK) && TimeoutMSRemaining);
}
else
{
@@ -474,15 +436,7 @@ static void XPROGTarget_SetRxMode(void) BITBANG_TPIDATA_PORT &= ~BITBANG_TPIDATA_MASK;
/* Wait until DATA line has been pulled up to idle by the target */
- while (!(BITBANG_TPIDATA_PIN & BITBANG_TPIDATA_MASK) && TimeoutMSRemaining)
- {
- /* Manage software timeout */
- if (TIFR0 & (1 << OCF0A))
- {
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
- }
+ while (!(BITBANG_TPIDATA_PIN & BITBANG_TPIDATA_MASK) && TimeoutMSRemaining);
}
#endif
|