From 3d28d53c3e2ae529933283e63a8b05f2ab1ce2be Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 2 May 2010 05:16:34 +0000 Subject: 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). --- Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c | 14 ------- Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c | 14 ------- Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 58 +++------------------------- 3 files changed, 6 insertions(+), 80 deletions(-) (limited to 'Projects/AVRISP-MKII/Lib/XPROG') 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 -- cgit v1.2.3