aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP-MKII
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/AVRISP-MKII')
-rw-r--r--Projects/AVRISP-MKII/Lib/Timeout.S23
-rw-r--r--Projects/AVRISP-MKII/Lib/V2Protocol.c6
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c13
-rw-r--r--Projects/AVRISP-MKII/makefile4
4 files changed, 21 insertions, 25 deletions
diff --git a/Projects/AVRISP-MKII/Lib/Timeout.S b/Projects/AVRISP-MKII/Lib/Timeout.S
deleted file mode 100644
index ad56d1d21..000000000
--- a/Projects/AVRISP-MKII/Lib/Timeout.S
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <avr/io.h>
-#include "V2Protocol.h"
-
-.global TIMER0_COMPA_vect
-TIMER0_COMPA_vect:
- sei
- push r24
- in r24, 0x3f
- push r24
-
- in r24, TimeoutMSRemaining
- and r24, r24
- breq Epilogue
- subi r24, 0x01
- out TimeoutMSRemaining, r24
-
-Epilogue:
- pop r24
- out 0x3f, r24
- pop r24
- reti
-
- \ No newline at end of file
diff --git a/Projects/AVRISP-MKII/Lib/V2Protocol.c b/Projects/AVRISP-MKII/Lib/V2Protocol.c
index 63b7294c0..035c8a5b3 100644
--- a/Projects/AVRISP-MKII/Lib/V2Protocol.c
+++ b/Projects/AVRISP-MKII/Lib/V2Protocol.c
@@ -43,6 +43,12 @@ uint32_t CurrentAddress;
bool MustSetAddress;
+ISR(TIMER0_COMPA_vect, ISR_NOBLOCK)
+{
+ if (TimeoutMSRemaining)
+ TimeoutMSRemaining--;
+}
+
/** Initializes the hardware and software associated with the V2 protocol command handling. */
void V2Protocol_Init(void)
{
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
index 228a89546..6adb24f16 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
@@ -165,6 +165,10 @@ void XPROGTarget_EnableTargetPDI(void)
BITBANG_PDIDATA_DDR |= BITBANG_PDIDATA_MASK;
BITBANG_PDICLOCK_DDR |= BITBANG_PDICLOCK_MASK;
+ /* Set DATA line low for at least 90ns to ensure that the device is ready for PDI mode to be entered */
+ BITBANG_PDIDATA_PORT &= ~BITBANG_PDIDATA_MASK;
+ _delay_us(1);
+
/* Set DATA line high for at least 90ns to disable /RESET functionality */
BITBANG_PDIDATA_PORT |= BITBANG_PDIDATA_MASK;
_delay_us(1);
@@ -314,6 +318,9 @@ void XPROGTarget_SendByte(const uint8_t Byte)
SoftUSART_Data = NewUSARTData;
SoftUSART_BitCount = BITS_IN_USART_FRAME;
#endif
+
+ if (TimeoutMSRemaining)
+ TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
}
/** Receives a byte via the software USART, blocking until data is received.
@@ -369,6 +376,9 @@ void XPROGTarget_SendBreak(void)
SoftUSART_Data = 0x0FFF;
SoftUSART_BitCount = BITS_IN_USART_FRAME;
#endif
+
+ if (TimeoutMSRemaining)
+ TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
}
static void XPROGTarget_SetTxMode(void)
@@ -405,6 +415,9 @@ static void XPROGTarget_SetTxMode(void)
}
#endif
+ if (TimeoutMSRemaining)
+ TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
+
IsSending = true;
}
diff --git a/Projects/AVRISP-MKII/makefile b/Projects/AVRISP-MKII/makefile
index cbc46ce50..44ca465de 100644
--- a/Projects/AVRISP-MKII/makefile
+++ b/Projects/AVRISP-MKII/makefile
@@ -66,7 +66,7 @@ MCU = at90usb1287
# Target board (see library "Board Types" documentation, NONE for projects not requiring
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
# "Board" inside the application directory.
-BOARD = USBKEY
+BOARD = XPLAIN
# Processor frequency.
@@ -157,7 +157,7 @@ CPPSRC =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
-ASRC = Lib/Timeout.S
+ASRC =
# Optimization level, can be [0, 1, 2, 3, s].