From 956f9e3709ff56acf37f2f446668b6d1411154f4 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 30 Jan 2012 16:54:09 +0000 Subject: [PATCH] Fixed AVRISP-MKII Clone timing out on long programming commands such as programming the EEPROM on an ATMEGA8 (thanks to Martin Kelling). --- LUFA/DoxygenPages/ChangeLog.txt | 1 + Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c | 3 +++ Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c | 3 +++ 3 files changed, 7 insertions(+) diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index 752fa4d07e..d6d09bafc9 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -49,6 +49,7 @@ * - Fixed AVRISP-MKII Clone compile warning on AVR8 U4 targets even when NO_VTARGET_DETECT is enabled * - Fixed AVRISP-MKII Clone failing to start application firmware once a TPI programming session is exited * - Fixed DFU class bootloader not resetting the LED pins as high impedance inputs when a software jump to the user applications is requested + * - Fixed AVRISP-MKII Clone timing out on long programming commands such as programming the EEPROM on an ATMEGA8 (thanks to Martin Kelling) * * \section Sec_ChangeLog111009 Version 111009 * New: diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c index 04bfcb5f83..157dd0b362 100644 --- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c +++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c @@ -357,6 +357,9 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, break; } + /* Program complete - reset timeout */ + wdt_reset(); + return ProgrammingStatus; } diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c index 0ba3c7674d..c4f6317391 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c @@ -155,6 +155,9 @@ uint8_t XPROGTarget_ReceiveByte(void) /* Wait until a byte has been received before reading */ while (!(UCSR1A & (1 << RXC1)) && !(TimeoutExpired)); + /* Byte of data received - reset the timeout */ + wdt_reset(); + return UDR1; }