diff options
author | Dean Camera <[email protected]> | 2010-04-30 08:27:21 +0000 |
---|---|---|
committer | Dean Camera <[email protected]> | 2010-04-30 08:27:21 +0000 |
commit | ceb16ee24f1e6add5e2ad0398369c24d2d868cd8 (patch) | |
tree | e8a588f50420aa51ac15e08f67eee1af23ea6ccf /Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | |
parent | 9cad677ebbd2fc4ea069f98335f8467b16dbb2cb (diff) | |
download | qmk_firmware-ceb16ee24f1e6add5e2ad0398369c24d2d868cd8.tar.gz qmk_firmware-ceb16ee24f1e6add5e2ad0398369c24d2d868cd8.zip |
Make sure that the NVM bus/controller busy waits in the AVRISP MKII clone project abort properly if a timeout occurs while waiting for a response.
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c')
-rw-r--r-- | Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c index bd269edd70..6f0d87add6 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c @@ -453,22 +453,33 @@ static void XPROGTarget_SetRxMode(void) {
BITBANG_PDIDATA_DDR &= ~BITBANG_PDIDATA_MASK;
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--;
+ }
+ }
}
else
{
BITBANG_TPIDATA_DDR &= ~BITBANG_TPIDATA_MASK;
- BITBANG_TPIDATA_PORT &= ~BITBANG_TPIDATA_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))
+ 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)
{
- TIFR0 |= (1 << OCF0A);
- TimeoutMSRemaining--;
- }
+ /* Manage software timeout */
+ if (TIFR0 & (1 << OCF0A))
+ {
+ TIFR0 |= (1 << OCF0A);
+ TimeoutMSRemaining--;
+ }
+ }
}
#endif
|