TCCR1B = 0;
TIFR1 = (1 << OCF1A);
}
-
+
if (PINB & (1 << 3))
SoftSPI_Data |= (1 << 0);
}
{
ISPTarget_SendByte(LOAD_EXTENDED_ADDRESS_CMD);
ISPTarget_SendByte(0x00);
- ISPTarget_SendByte((CurrentAddress & 0x00FF0000) >> 16);
+ ISPTarget_SendByte(CurrentAddress >> 16);
ISPTarget_SendByte(0x00);
}
#include "../V2Protocol.h"
#include "ISPProtocol.h"
#include "Config/AppConfig.h"
-
+
/* Preprocessor Checks: */
#if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
#undef ENABLE_ISP_PROTOCOL
*/
static inline uint8_t ISPTarget_ReceiveByte(void)
{
- #if !defined(INVERTED_ISP_MISO)
+ uint8_t ReceivedByte;
+
if (HardwareSPIMode)
- return SPI_ReceiveByte();
+ ReceivedByte = SPI_ReceiveByte();
else
- return ISPTarget_TransferSoftSPIByte(0x00);
+ ReceivedByte = ISPTarget_TransferSoftSPIByte(0x00);
+
+ #if defined(INVERTED_ISP_MISO)
+ return ~ReceivedByte;
#else
- if (HardwareSPIMode)
- return ~SPI_ReceiveByte();
- else
- return ~ISPTarget_TransferSoftSPIByte(0x00);
+ return ReceivedByte;
#endif
}
*/
static inline uint8_t ISPTarget_TransferByte(const uint8_t Byte)
{
- #if !defined(INVERTED_ISP_MISO)
+ uint8_t ReceivedByte;
+
if (HardwareSPIMode)
- return SPI_TransferByte(Byte);
+ ReceivedByte = SPI_TransferByte(Byte);
else
- return ISPTarget_TransferSoftSPIByte(Byte);
+ ReceivedByte = ISPTarget_TransferSoftSPIByte(Byte);
+
+ #if defined(INVERTED_ISP_MISO)
+ return ~ReceivedByte;
#else
- if (HardwareSPIMode)
- return ~SPI_TransferByte(Byte);
- else
- return ~ISPTarget_TransferSoftSPIByte(Byte);
+ return ReceivedByte;
#endif
}
#include "V2ProtocolParams.h"
/* Non-Volatile Parameter Values for EEPROM storage */
-static uint8_t EEMEM EEPROM_Reset_Polarity = 0x01;
+static uint8_t EEMEM EEPROM_Reset_Polarity = 0x01;
/* Non-Volatile Parameter Values for EEPROM storage */
-static uint8_t EEMEM EEPROM_SCK_Duration = 0x06;
+static uint8_t EEMEM EEPROM_SCK_Duration = 0x06;
/* Volatile Parameter Values for RAM storage */
static ParameterItem_t ParameterTable[] =
#if (!defined(FIRMWARE_VERSION_MINOR) || defined(__DOXYGEN__))
/** Minor firmware version, reported to the host on request; must match the version
* the host is expecting, or it (may) reject further communications with the programmer. */
- #define FIRMWARE_VERSION_MINOR 0x11
+ #define FIRMWARE_VERSION_MINOR 0x14
#endif
/* Type Defines: */
*
* \return Boolean true if the command sequence complete successfully
*/
-bool XMEGANVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest)
+bool XMEGANVM_GetMemoryCRC(const uint8_t CRCCommand,
+ uint32_t* const CRCDest)
{
*CRCDest = 0;
*
* \return Boolean true if the command sequence complete successfully
*/
-bool XMEGANVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize)
+bool XMEGANVM_ReadMemory(const uint32_t ReadAddress,
+ uint8_t* ReadBuffer,
+ uint16_t ReadSize)
{
/* Wait until the NVM controller is no longer busy */
if (!(XMEGANVM_WaitWhileNVMControllerBusy()))
*
* \return Boolean true if the command sequence complete successfully
*/
-bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t Byte)
+bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand,
+ const uint32_t WriteAddress,
+ const uint8_t Byte)
{
/* Wait until the NVM controller is no longer busy */
if (!(XMEGANVM_WaitWhileNVMControllerBusy()))
*
* \return Boolean true if the command sequence complete successfully
*/
-bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand,
- const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress,
- const uint8_t* WriteBuffer, uint16_t WriteSize)
+bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand,
+ const uint8_t EraseBuffCommand,
+ const uint8_t WritePageCommand,
+ const uint8_t PageMode,
+ const uint32_t WriteAddress,
+ const uint8_t* WriteBuffer,
+ uint16_t WriteSize)
{
if (PageMode & XPRG_PAGEMODE_ERASE)
{
*
* \return Boolean true if the command sequence complete successfully
*/
-bool XMEGANVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address)
+bool XMEGANVM_EraseMemory(const uint8_t EraseCommand,
+ const uint32_t Address)
{
/* Wait until the NVM controller is no longer busy */
if (!(XMEGANVM_WaitWhileNVMControllerBusy()))
#include "XPROGProtocol.h"
#include "XPROGTarget.h"
#include "Config/AppConfig.h"
-
+
/* Preprocessor Checks: */
#if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
#undef ENABLE_ISP_PROTOCOL
#define XMEGA_NVM_REG_INTCTRL 0x0D
#define XMEGA_NVM_REG_STATUS 0x0F
#define XMEGA_NVM_REG_LOCKBITS 0x10
-
+
#define XMEGA_NVM_BIT_CTRLA_CMDEX (1 << 0)
#define XMEGA_NVM_CMD_NOOP 0x00
bool XMEGANVM_WaitWhileNVMControllerBusy(void);
bool XMEGANVM_EnablePDI(void);
void XMEGANVM_DisablePDI(void);
- bool XMEGANVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest);
- bool XMEGANVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize);
- bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t Byte);
- bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand,
- const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress,
- const uint8_t* WriteBuffer, uint16_t WriteSize);
- bool XMEGANVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address);
+ bool XMEGANVM_GetMemoryCRC(const uint8_t CRCCommand,
+ uint32_t* const CRCDest);
+ bool XMEGANVM_ReadMemory(const uint32_t ReadAddress,
+ uint8_t* ReadBuffer, uint16_t ReadSize);
+ bool XMEGANVM_WriteByteMemory(const uint8_t WriteCommand,
+ const uint32_t WriteAddress,
+ const uint8_t Byte);
+ bool XMEGANVM_WritePageMemory(const uint8_t WriteBuffCommand,
+ const uint8_t EraseBuffCommand,
+ const uint8_t WritePageCommand,
+ const uint8_t PageMode,
+ const uint32_t WriteAddress,
+ const uint8_t* WriteBuffer,
+ uint16_t WriteSize);
+ bool XMEGANVM_EraseMemory(const uint8_t EraseCommand,
+ const uint32_t Address);
#if defined(INCLUDE_FROM_XMEGANVM_C)
static void XMEGANVM_SendNVMRegAddress(const uint8_t Register);
#include "../V2Protocol.h"
#include "XPROGProtocol.h"
#include "Config/AppConfig.h"
-
+
/* Preprocessor Checks: */
#if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
#undef ENABLE_ISP_PROTOCOL