aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP-MKII
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/AVRISP-MKII')
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c10
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h2
-rw-r--r--Projects/AVRISP-MKII/makefile6
3 files changed, 10 insertions, 8 deletions
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c b/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c
index ce02ebe95..60e755265 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.c
@@ -96,13 +96,15 @@ bool XMEGANVM_WaitWhileNVMBusBusy(void)
*/
bool XMEGANVM_WaitWhileNVMControllerBusy(void)
{
+ /* Preload the pointer register with the NVM STATUS register address to check the BUSY flag */
+ XPROGTarget_SendByte(PDI_CMD_ST | (PDI_POINTER_DIRECT << 2) | PDI_DATSIZE_4BYTES);
+ XMEGANVM_SendNVMRegAddress(XMEGA_NVM_REG_STATUS);
+
/* Poll the NVM STATUS register while the NVM controller is busy */
for (;;)
{
- /* Send a LDS command to read the NVM STATUS register to check the BUSY flag */
- XPROGTarget_SendByte(PDI_CMD_LDS | (PDI_DATSIZE_4BYTES << 2));
- XMEGANVM_SendNVMRegAddress(XMEGA_NVM_REG_STATUS);
-
+ /* Fetch the current status value via the pointer register (without auto-increment afterwards) */
+ XPROGTarget_SendByte(PDI_CMD_LD | (PDI_POINTER_INDIRECT << 2) | PDI_DATSIZE_1BYTE);
uint8_t StatusRegister = XPROGTarget_ReceiveByte();
/* We might have timed out waiting for the status register read response, check here */
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
index 8d7181aa2..9f51b2738 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
@@ -56,7 +56,7 @@
#endif
/** Serial carrier TPI/PDI speed when hardware TPI/PDI mode is used. */
- #define XPROG_HARDWARE_SPEED 500000
+ #define XPROG_HARDWARE_SPEED 250000
/** Total number of bits in a single USART frame. */
#define BITS_IN_USART_FRAME 12
diff --git a/Projects/AVRISP-MKII/makefile b/Projects/AVRISP-MKII/makefile
index 5135722fd..28f893956 100644
--- a/Projects/AVRISP-MKII/makefile
+++ b/Projects/AVRISP-MKII/makefile
@@ -60,13 +60,13 @@
# MCU name
-MCU = at90usb1287
+MCU = at90usb162
# 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 = USBTINYMKII
# Processor frequency.
@@ -80,7 +80,7 @@ BOARD = USBKEY
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
-F_CPU = 8000000
+F_CPU = 16000000
# Input clock frequency.