aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h')
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h60
1 files changed, 34 insertions, 26 deletions
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
index 8189d29b8..091cb9861 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
@@ -57,50 +57,57 @@
#endif
/** Serial carrier TPI/PDI speed in Hz, when hardware TPI/PDI mode is used. */
- #define XPROG_HARDWARE_SPEED 250000
+ #define XPROG_HARDWARE_SPEED 2000000
/** Total number of bits in a single USART frame. */
#define BITS_IN_USART_FRAME 12
- #define PDI_CMD_LDS 0x00
- #define PDI_CMD_LD 0x20
- #define PDI_CMD_STS 0x40
- #define PDI_CMD_ST 0x60
- #define PDI_CMD_LDCS 0x80
- #define PDI_CMD_REPEAT 0xA0
- #define PDI_CMD_STCS 0xC0
- #define PDI_CMD_KEY 0xE0
-
- #define PDI_STATUS_REG 0
- #define PDI_RESET_REG 1
- #define PDI_CTRL_REG 2
+ /** \name PDI Related Constants
+ * @{
+ */
+ #define PDI_CMD_LDS(AddressSize, DataSize) (0x00 | ( AddressSize << 2) | DataSize)
+ #define PDI_CMD_LD(PointerAccess, DataSize) (0x20 | (PointerAccess << 2) | DataSize)
+ #define PDI_CMD_STS(AddressSize, DataSize) (0x40 | ( AddressSize << 2) | DataSize)
+ #define PDI_CMD_ST(PointerAccess, DataSize) (0x60 | (PointerAccess << 2) | DataSize)
+ #define PDI_CMD_LDCS(PDIReg) (0x80 | PDIReg)
+ #define PDI_CMD_REPEAT(DataSize) (0xA0 | DataSize)
+ #define PDI_CMD_STCS(PDIReg) (0xC0 | PDIReg)
+ #define PDI_CMD_KEY 0xE0
+
+ #define PDI_REG_STATUS 0
+ #define PDI_REG_RESET 1
+ #define PDI_REG_CTRL 2
#define PDI_STATUS_NVM (1 << 1)
#define PDI_RESET_KEY 0x59
#define PDI_NVMENABLE_KEY (uint8_t[]){0x12, 0x89, 0xAB, 0x45, 0xCD, 0xD8, 0x88, 0xFF}
- #define PDI_DATSIZE_1BYTE 0
- #define PDI_DATSIZE_2BYTES 1
- #define PDI_DATSIZE_3BYTES 2
- #define PDI_DATSIZE_4BYTES 3
+ #define PDI_DATASIZE_1BYTE 0
+ #define PDI_DATASIZE_2BYTES 1
+ #define PDI_DATASIZE_3BYTES 2
+ #define PDI_DATASIZE_4BYTES 3
#define PDI_POINTER_INDIRECT 0
#define PDI_POINTER_INDIRECT_PI 1
#define PDI_POINTER_DIRECT 2
+ /** @} */
- #define TPI_CMD_SLD 0x20
- #define TPI_CMD_SST 0x60
+ /** \name TPI Related Constants
+ * @{
+ */
+ #define TPI_CMD_SLD(PointerAccess) (0x20 | PointerAccess)
+ #define TPI_CMD_SST(PointerAccess) (0x60 | PointerAccess)
#define TPI_CMD_SSTPR 0x68
- #define TPI_CMD_SIN 0x10
- #define TPI_CMD_SOUT 0x90
- #define TPI_CMD_SLDCS 0x80
- #define TPI_CMD_SSTCS 0xC0
+ #define TPI_CMD_SIN(Address) (0x10 | ((Address & 0x30) << 1) | (Address & 0x0F))
+ #define TPI_CMD_SOUT(Address) (0x90 | ((Address & 0x30) << 1) | (Address & 0x0F))
+ #define TPI_CMD_SLDCS(TPIReg) (0x80 | TPIReg)
+ #define TPI_CMD_SSTCS(TPIReg) (0xC0 | TPIReg)
#define TPI_CMD_SKEY 0xE0
- #define TPI_STATUS_REG 0x00
- #define TPI_CTRL_REG 0x02
- #define TPI_ID_REG 0x0F
+ #define TPI_REG_STATUS 0x00
+ #define TPI_REG_CTRL 0x02
+ #define TPI_REG_ID 0x0F
#define TPI_STATUS_NVM (1 << 1)
@@ -108,6 +115,7 @@
#define TPI_POINTER_INDIRECT 0
#define TPI_POINTER_INDIRECT_PI 4
+ /** @} */
/* Function Prototypes: */
void XPROGTarget_EnableTargetPDI(void);