Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Erik Strand
lufa
Commits
0b6d5467
Commit
0b6d5467
authored
May 29, 2011
by
Dean Camera
Browse files
Oops - revert commit of an incomplete port of the AVRISP-MKII project.
parent
ea922c98
Changes
19
Hide whitespace changes
Inline
Side-by-side
Projects/AVRISP-MKII/AVRISP-MKII.c
View file @
0b6d5467
...
...
@@ -45,14 +45,14 @@ int main(void)
V2Protocol_Init
();
LEDs_SetAllLEDs
(
LEDMASK_USB_NOTREADY
);
GlobalInterruptEnable
();
sei
();
for
(;;)
{
#if (BOARD == BOARD_USBTINYMKII)
/* On the USBTINY-MKII
board
target, there is a secondary LED which indicates the current selected
power
mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
LEDs_ChangeLEDs
(
LED
S_LED3
,
(
PIND
&
(
1
<<
0
))
?
0
:
LED
S_LED3
);
/* On the USBTINY-MKII target, there is a secondary LED which indicates the current selected
power
mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
LEDs_ChangeLEDs
(
LED
MASK_VBUSPOWER
,
(
PIND
&
(
1
<<
0
))
?
0
:
LED
MASK_VBUSPOWER
);
#endif
AVRISP_Task
();
...
...
@@ -63,35 +63,13 @@ int main(void)
/** Configures the board hardware and chip peripherals for the demo's functionality. */
void
SetupHardware
(
void
)
{
#if (ARCH == ARCH_AVR8)
/* Disable watchdog if enabled by bootloader/fuses */
MCUSR
&=
~
(
1
<<
WDRF
);
wdt_disable
();
/* Disable clock division */
clock_prescale_set
(
clock_div_1
);
#elif (ARCH == ARCH_UC3)
/* Select slow startup, external high frequency crystal attached to OSC0 */
AVR32_PM
.
OSCCTRL0
.
mode
=
7
;
AVR32_PM
.
OSCCTRL0
.
startup
=
6
;
AVR32_PM
.
MCCTRL
.
osc0en
=
true
;
while
(
!
(
AVR32_PM
.
POSCSR
.
osc0rdy
));
/* Switch CPU core to use OSC0 as the system clock */
AVR32_PM
.
MCCTRL
.
mcsel
=
1
;
/* Start PLL1 to feed into the USB generic clock module */
AVR32_PM
.
PLL
[
1
].
pllmul
=
(
F_USB
/
F_CPU
)
?
(((
F_USB
/
F_CPU
)
-
1
)
/
2
)
:
0
;
AVR32_PM
.
PLL
[
1
].
plldiv
=
0
;
AVR32_PM
.
PLL
[
1
].
pllosc
=
0
;
AVR32_PM
.
PLL
[
1
].
pllen
=
true
;
while
(
!
(
AVR32_PM
.
POSCSR
.
lock1
));
/* Configure interrupt management peripheral */
// INTC_Init();
INTC_RegisterGroupHandler
(
AVR32_USBB_IRQ
,
AVR32_INTC_INT0
,
USB_GEN_vect
);
#endif
/* Disable watchdog if enabled by bootloader/fuses */
MCUSR
&=
~
(
1
<<
WDRF
);
wdt_disable
();
/* Disable clock division */
clock_prescale_set
(
clock_div_1
);
/* Hardware Initialization */
LEDs_Init
();
USB_Init
();
...
...
Projects/AVRISP-MKII/AVRISP-MKII.h
View file @
0b6d5467
...
...
@@ -37,7 +37,11 @@
#define _AVRISP_H_
/* Includes: */
#include
<LUFA/Common/Common.h>
#include
<avr/io.h>
#include
<avr/wdt.h>
#include
<avr/interrupt.h>
#include
<avr/power.h>
#include
<LUFA/Version.h>
#include
<LUFA/Drivers/Board/LEDs.h>
#include
<LUFA/Drivers/USB/USB.h>
...
...
@@ -46,17 +50,6 @@
#include
<LUFA/Drivers/Peripheral/ADC.h>
#endif
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#include
<avr/wdt.h>
#include
<avr/interrupt.h>
#include
<avr/power.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#include
<LUFA/Platform/UC3/INTC_UC3.h>
// TODO: FIXME
#endif
#include
"Descriptors.h"
#include
"Lib/V2Protocol.h"
...
...
@@ -76,6 +69,9 @@
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2)
/** LED mask for the library LED driver, to indicate that the target is being powered by VBUS. */
#define LEDMASK_VBUSPOWER LEDS_LED3
/* Function Prototypes: */
void
SetupHardware
(
void
);
void
AVRISP_Task
(
void
);
...
...
Projects/AVRISP-MKII/Descriptors.c
View file @
0b6d5467
...
...
@@ -53,8 +53,8 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
.
Endpoint0Size
=
FIXED_CONTROL_ENDPOINT_SIZE
,
.
VendorID
=
CPU_TO_LE16
(
0x03EB
)
,
.
ProductID
=
CPU_TO_LE16
(
0x2104
)
,
.
VendorID
=
0x03EB
,
.
ProductID
=
0x2104
,
.
ReleaseNumber
=
VERSION_BCD
(
02
.
00
),
.
ManufacturerStrIndex
=
0x01
,
...
...
@@ -75,7 +75,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
{
.
Header
=
{.
Size
=
sizeof
(
USB_Descriptor_Configuration_Header_t
),
.
Type
=
DTYPE_Configuration
},
.
TotalConfigurationSize
=
CPU_TO_LE16
(
sizeof
(
USB_Descriptor_Configuration_t
)
)
,
.
TotalConfigurationSize
=
sizeof
(
USB_Descriptor_Configuration_t
),
.
TotalInterfaces
=
1
,
.
ConfigurationNumber
=
1
,
...
...
@@ -108,7 +108,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.
EndpointAddress
=
(
ENDPOINT_DESCRIPTOR_DIR_IN
|
AVRISP_DATA_IN_EPNUM
),
.
Attributes
=
(
EP_TYPE_BULK
|
ENDPOINT_ATTR_NO_SYNC
|
ENDPOINT_USAGE_DATA
),
.
EndpointSize
=
CPU_TO_LE16
(
AVRISP_DATA_EPSIZE
)
,
.
EndpointSize
=
AVRISP_DATA_EPSIZE
,
.
PollingIntervalMS
=
0x0A
},
...
...
@@ -118,7 +118,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.
EndpointAddress
=
(
ENDPOINT_DESCRIPTOR_DIR_OUT
|
AVRISP_DATA_OUT_EPNUM
),
.
Attributes
=
(
EP_TYPE_BULK
|
ENDPOINT_ATTR_NO_SYNC
|
ENDPOINT_USAGE_DATA
),
.
EndpointSize
=
CPU_TO_LE16
(
AVRISP_DATA_EPSIZE
)
,
.
EndpointSize
=
AVRISP_DATA_EPSIZE
,
.
PollingIntervalMS
=
0x0A
},
};
...
...
@@ -142,17 +142,7 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
{
.
Header
=
{.
Size
=
USB_STRING_LEN
(
11
),
.
Type
=
DTYPE_String
},
.
UnicodeString
=
{
CPU_TO_LE16
(
'D'
),
CPU_TO_LE16
(
'e'
),
CPU_TO_LE16
(
'a'
),
CPU_TO_LE16
(
'n'
),
CPU_TO_LE16
(
' '
),
CPU_TO_LE16
(
'C'
),
CPU_TO_LE16
(
'a'
),
CPU_TO_LE16
(
'm'
),
CPU_TO_LE16
(
'e'
),
CPU_TO_LE16
(
'r'
),
CPU_TO_LE16
(
'a'
)}
.
UnicodeString
=
L"Dean Camera"
};
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
...
...
@@ -163,28 +153,7 @@ const USB_Descriptor_String_t PROGMEM ProductString =
{
.
Header
=
{.
Size
=
USB_STRING_LEN
(
22
),
.
Type
=
DTYPE_String
},
.
UnicodeString
=
{
CPU_TO_LE16
(
'L'
),
CPU_TO_LE16
(
'U'
),
CPU_TO_LE16
(
'F'
),
CPU_TO_LE16
(
'A'
),
CPU_TO_LE16
(
' '
),
CPU_TO_LE16
(
'A'
),
CPU_TO_LE16
(
'V'
),
CPU_TO_LE16
(
'R'
),
CPU_TO_LE16
(
'I'
),
CPU_TO_LE16
(
'S'
),
CPU_TO_LE16
(
'P'
),
CPU_TO_LE16
(
' '
),
CPU_TO_LE16
(
'M'
),
CPU_TO_LE16
(
'k'
),
CPU_TO_LE16
(
'I'
),
CPU_TO_LE16
(
'I'
),
CPU_TO_LE16
(
' '
),
CPU_TO_LE16
(
'C'
),
CPU_TO_LE16
(
'l'
),
CPU_TO_LE16
(
'o'
),
CPU_TO_LE16
(
'n'
),
CPU_TO_LE16
(
'e'
)}
.
UnicodeString
=
L"LUFA AVRISP MkII Clone"
};
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
...
...
@@ -194,19 +163,7 @@ const USB_Descriptor_String_t PROGMEM SerialString =
{
.
Header
=
{.
Size
=
USB_STRING_LEN
(
13
),
.
Type
=
DTYPE_String
},
.
UnicodeString
=
{
CPU_TO_LE16
(
'0'
),
CPU_TO_LE16
(
'0'
),
CPU_TO_LE16
(
'0'
),
CPU_TO_LE16
(
'0'
),
CPU_TO_LE16
(
'A'
),
CPU_TO_LE16
(
'0'
),
CPU_TO_LE16
(
'0'
),
CPU_TO_LE16
(
'1'
),
CPU_TO_LE16
(
'2'
),
CPU_TO_LE16
(
'8'
),
CPU_TO_LE16
(
'2'
),
CPU_TO_LE16
(
'5'
),
CPU_TO_LE16
(
'5'
)}
.
UnicodeString
=
L"0000A00128255"
};
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
...
...
Projects/AVRISP-MKII/Descriptors.h
View file @
0b6d5467
...
...
@@ -37,18 +37,11 @@
#define _DESCRIPTORS_H_
/* Includes: */
#include
<LUFA/Common/Common.h>
#include
<LUFA/Drivers/USB/USB.h>
#include
<avr/pgmspace.h>
#if (ARCH == ARCH_AVR8)
#include
<avr/pgmspace.h>
#endif
#include
<LUFA/Drivers/USB/USB.h>
/* Macros: */
#if (ARCH == ARCH_UC3) // TODO: FIXME
#define PROGMEM const
#endif
#if !defined(LIBUSB_DRIVER_COMPAT)
/** Endpoint number of the AVRISP data OUT endpoint. */
#define AVRISP_DATA_OUT_EPNUM 2
...
...
@@ -77,7 +70,7 @@
USB_Descriptor_Interface_t
AVRISP_Interface
;
USB_Descriptor_Endpoint_t
AVRISP_DataInEndpoint
;
USB_Descriptor_Endpoint_t
AVRISP_DataOutEndpoint
;
}
ATTR_PACKED
USB_Descriptor_Configuration_t
;
}
USB_Descriptor_Configuration_t
;
/* Function Prototypes: */
uint16_t
CALLBACK_USB_GetDescriptor
(
const
uint16_t
wValue
,
...
...
Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
View file @
0b6d5467
...
...
@@ -52,7 +52,7 @@ void ISPProtocol_EnterISPMode(void)
uint8_t
PollValue
;
uint8_t
PollIndex
;
uint8_t
EnterProgBytes
[
4
];
}
ATTR_PACKED
Enter_ISP_Params
;
}
Enter_ISP_Params
;
Endpoint_Read_Stream_LE
(
&
Enter_ISP_Params
,
sizeof
(
Enter_ISP_Params
),
NULL
);
...
...
@@ -107,7 +107,7 @@ void ISPProtocol_LeaveISPMode(void)
{
uint8_t
PreDelayMS
;
uint8_t
PostDelayMS
;
}
ATTR_PACKED
Leave_ISP_Params
;
}
Leave_ISP_Params
;
Endpoint_Read_Stream_LE
(
&
Leave_ISP_Params
,
sizeof
(
Leave_ISP_Params
),
NULL
);
...
...
@@ -141,12 +141,12 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
uint8_t
ProgrammingCommands
[
3
];
uint8_t
PollValue1
;
uint8_t
PollValue2
;
uint8_t
ProgData
[
256
];
// Note, the Jungo driver has a very short ACK timeout period, need to buffer the
}
ATTR_PACKED
Write_Memory_Params
;
// whole page and ACK the packet as fast as possible to prevent it from aborting
uint8_t
ProgData
[
256
];
// Note, the Jungo driver has a very short ACK timeout period, need to buffer the
}
Write_Memory_Params
;
// whole page and ACK the packet as fast as possible to prevent it from aborting
Endpoint_Read_Stream_LE
(
&
Write_Memory_Params
,
(
sizeof
(
Write_Memory_Params
)
-
sizeof
(
Write_Memory_Params
.
ProgData
)),
NULL
);
Write_Memory_Params
.
BytesToWrite
=
be16_to_cpu
(
Write_Memory_Params
.
BytesToWrite
);
Write_Memory_Params
.
BytesToWrite
=
SwapEndian_16
(
Write_Memory_Params
.
BytesToWrite
);
if
(
Write_Memory_Params
.
BytesToWrite
>
sizeof
(
Write_Memory_Params
.
ProgData
))
{
...
...
@@ -286,10 +286,10 @@ void ISPProtocol_ReadMemory(uint8_t V2Command)
{
uint16_t
BytesToRead
;
uint8_t
ReadMemoryCommand
;
}
ATTR_PACKED
Read_Memory_Params
;
}
Read_Memory_Params
;
Endpoint_Read_Stream_LE
(
&
Read_Memory_Params
,
sizeof
(
Read_Memory_Params
),
NULL
);
Read_Memory_Params
.
BytesToRead
=
be16_to_cpu
(
Read_Memory_Params
.
BytesToRead
);
Read_Memory_Params
.
BytesToRead
=
SwapEndian_16
(
Read_Memory_Params
.
BytesToRead
);
Endpoint_ClearOUT
();
Endpoint_SelectEndpoint
(
AVRISP_DATA_IN_EPNUM
);
...
...
@@ -360,7 +360,7 @@ void ISPProtocol_ChipErase(void)
uint8_t
EraseDelayMS
;
uint8_t
PollMethod
;
uint8_t
EraseCommandBytes
[
4
];
}
ATTR_PACKED
Erase_Chip_Params
;
}
Erase_Chip_Params
;
Endpoint_Read_Stream_LE
(
&
Erase_Chip_Params
,
sizeof
(
Erase_Chip_Params
),
NULL
);
...
...
@@ -396,7 +396,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command)
{
uint8_t
RetByte
;
uint8_t
ReadCommandBytes
[
4
];
}
ATTR_PACKED
Read_FuseLockSigOSCCAL_Params
;
}
Read_FuseLockSigOSCCAL_Params
;
Endpoint_Read_Stream_LE
(
&
Read_FuseLockSigOSCCAL_Params
,
sizeof
(
Read_FuseLockSigOSCCAL_Params
),
NULL
);
...
...
@@ -427,7 +427,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command)
struct
{
uint8_t
WriteCommandBytes
[
4
];
}
ATTR_PACKED
Write_FuseLockSig_Params
;
}
Write_FuseLockSig_Params
;
Endpoint_Read_Stream_LE
(
&
Write_FuseLockSig_Params
,
sizeof
(
Write_FuseLockSig_Params
),
NULL
);
...
...
@@ -454,7 +454,7 @@ void ISPProtocol_SPIMulti(void)
uint8_t
RxBytes
;
uint8_t
RxStartAddr
;
uint8_t
TxData
[
255
];
}
ATTR_PACKED
SPI_Multi_Params
;
}
SPI_Multi_Params
;
Endpoint_Read_Stream_LE
(
&
SPI_Multi_Params
,
(
sizeof
(
SPI_Multi_Params
)
-
sizeof
(
SPI_Multi_Params
.
TxData
)),
NULL
);
Endpoint_Read_Stream_LE
(
&
SPI_Multi_Params
.
TxData
,
SPI_Multi_Params
.
TxBytes
,
NULL
);
...
...
Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
View file @
0b6d5467
...
...
@@ -37,14 +37,10 @@
#define _ISP_PROTOCOL_
/* Includes: */
#include
<LUFA/Common/Common.h>
#include
<avr/io.h>
#include
<util/delay.h>
#include
<LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#endif
#include
"../V2Protocol.h"
...
...
Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h
View file @
0b6d5467
...
...
@@ -37,19 +37,12 @@
#define _ISP_TARGET_
/* Includes: */
#include
<LUFA/Common/Common.h>
#include
<avr/io.h>
#include
<avr/pgmspace.h>
#include
<util/delay.h>
#include
<LUFA/Drivers/USB/USB.h>
#if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
#include
<LUFA/Drivers/Peripheral/SPI.h>
// TODO: FIXME
#endif
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#include
<avr/pgmspace.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#endif
#include
<LUFA/Drivers/Peripheral/SPI.h>
#include
"../V2ProtocolParams.h"
...
...
@@ -91,7 +84,6 @@
const
uint8_t
ReadMemCommand
);
/* Inline Functions: */
#if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
/** Sends a byte of ISP data to the attached target, using the appropriate SPI hardware or
* software routines depending on the selected ISP speed.
*
...
...
@@ -132,7 +124,6 @@
else
return
ISPTarget_TransferSoftSPIByte
(
Byte
);
}
#endif
#endif
Projects/AVRISP-MKII/Lib/V2Protocol.c
View file @
0b6d5467
...
...
@@ -42,17 +42,13 @@ uint32_t CurrentAddress;
/** Flag to indicate that the next read/write operation must update the device's current extended FLASH address */
bool
MustLoadExtendedAddress
;
/** Command timeout expiration flag. */
volatile
bool
TimeoutExpired
;
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/** ISR to manage timeouts whilst processing a V2Protocol command */
ISR
(
WDT_vect
,
ISR_BLOCK
)
{
TimeoutExpired
=
true
;
wdt_disable
();
}
#endif
/** Initialises the hardware and software associated with the V2 protocol command handling. */
void
V2Protocol_Init
(
void
)
...
...
@@ -79,12 +75,10 @@ void V2Protocol_ProcessCommand(void)
{
uint8_t
V2Command
=
Endpoint_Read_8
();
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/* Start the watchdog with timeout interrupt enabled to manage the timeout */
TimeoutExpired
=
false
;
wdt_enable
(
WDTO_1S
);
WDTCSR
|=
(
1
<<
WDIE
);
#endif
switch
(
V2Command
)
{
...
...
@@ -146,10 +140,8 @@ void V2Protocol_ProcessCommand(void)
break
;
}
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/* Disable the timeout management watchdog timer */
wdt_disable
();
#endif
Endpoint_WaitUntilReady
();
Endpoint_SelectEndpoint
(
AVRISP_DATA_OUT_EPNUM
);
...
...
Projects/AVRISP-MKII/Lib/V2Protocol.h
View file @
0b6d5467
...
...
@@ -37,17 +37,12 @@
#define _V2_PROTOCOL_
/* Includes: */
#include
<LUFA/Common/Common.h>
#include
<avr/io.h>
#include
<avr/interrupt.h>
#include
<avr/wdt.h>
#include
<LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#include
<avr/interrupt.h>
#include
<avr/wdt.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#endif
#include
"../Descriptors.h"
#include
"V2ProtocolConstants.h"
#include
"V2ProtocolParams.h"
...
...
@@ -74,13 +69,15 @@
/** Timeout period for each issued command from the host before it is aborted (in 10ms ticks). */
#define COMMAND_TIMEOUT_TICKS 100
/** Command timeout expiration flag, GPIOR for speed. */
#define TimeoutExpired GPIOR1
/** MUX mask for the VTARGET ADC channel number. */
#define VTARGET_ADC_CHANNEL_MASK ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL)
/* External Variables: */
extern
uint32_t
CurrentAddress
;
extern
bool
MustLoadExtendedAddress
;
extern
volatile
bool
TimeoutExpired
;
extern
uint32_t
CurrentAddress
;
extern
bool
MustLoadExtendedAddress
;
/* Function Prototypes: */
void
V2Protocol_Init
(
void
);
...
...
Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h
View file @
0b6d5467
...
...
@@ -73,7 +73,6 @@
#define STATUS_CONN_FAIL_SCK 0x04
#define STATUS_TGT_NOT_DETECTED 0x10
#define STATUS_TGT_REVERSE_INSERTED 0x20
#define STATUS_ANSWER_CKSUM_ERROR 0xB0
#define PARAM_BUILD_NUMBER_LOW 0x80
#define PARAM_BUILD_NUMBER_HIGH 0x81
...
...
Projects/AVRISP-MKII/Lib/V2ProtocolParams.c
View file @
0b6d5467
...
...
@@ -37,7 +37,7 @@
#include
"V2ProtocolParams.h"
/* Non-Volatile Parameter Values for EEPROM storage */
static
uint8_t
EEMEM
EEPROM_Res
e
t_Polarity
=
0x00
;
static
uint8_t
EEMEM
EEPROM_Rest_Polarity
=
0x00
;
/* Volatile Parameter Values for RAM storage */
static
ParameterItem_t
ParameterTable
[]
=
...
...
@@ -88,7 +88,7 @@ static ParameterItem_t ParameterTable[] =
void
V2Params_LoadNonVolatileParamValues
(
void
)
{
/* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM */
V2Params_GetParamFromTable
(
PARAM_RESET_POLARITY
)
->
ParamValue
=
eeprom_read_byte
(
&
EEPROM_Res
e
t_Polarity
);
V2Params_GetParamFromTable
(
PARAM_RESET_POLARITY
)
->
ParamValue
=
eeprom_read_byte
(
&
EEPROM_Rest_Polarity
);
}
/** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as
...
...
@@ -163,7 +163,7 @@ void V2Params_SetParameterValue(const uint8_t ParamID,
/* The target RESET line polarity is a non-volatile parameter, save to EEPROM when changed */
if
(
ParamID
==
PARAM_RESET_POLARITY
)
eeprom_update_byte
(
&
EEPROM_Res
e
t_Polarity
,
Value
);
eeprom_update_byte
(
&
EEPROM_Rest_Polarity
,
Value
);
}
/** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given
...
...
Projects/AVRISP-MKII/Lib/V2ProtocolParams.h
View file @
0b6d5467
...
...
@@ -37,20 +37,15 @@
#define _V2_PROTOCOL_PARAMS_
/* Includes: */
#include
<LUFA/Common/Common.h>
#include
<avr/io.h>
#include
<avr/eeprom.h>
#include
<LUFA/Version.h>
#if defined(ADC)
#include
<LUFA/Drivers/Peripheral/ADC.h>
#endif
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#include
<avr/eeprom.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#endif
#include
"V2Protocol.h"
#include
"V2ProtocolConstants.h"
#include
"ISP/ISPTarget.h"
...
...
@@ -64,12 +59,6 @@
/** Total number of parameters in the parameter table */
#define TABLE_PARAM_COUNT (sizeof(ParameterTable) / sizeof(ParameterTable[0]))
#if (ARCH == ARCH_UC3) // TODO: FIXME
#define EEMEM
#define eeprom_read_byte(x) *x
#define eeprom_update_byte(x,y) *x=y
#endif
/* Type Defines: */
/** Type define for a parameter table entry indicating a PC readable or writable device parameter. */
...
...
Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h
View file @
0b6d5467
...
...
@@ -37,17 +37,12 @@
#define _TINY_NVM_
/* Includes: */
#include
<LUFA/Common/Common.h>
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#include
<avr/interrupt.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#endif
#include
<avr/io.h>
#include
<avr/interrupt.h>
#include
<stdbool.h>
#include
<LUFA/Common/Common.h>
#include
"XPROGProtocol.h"
#include
"XPROGTarget.h"
...
...
Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h
View file @
0b6d5467
...
...
@@ -37,17 +37,12 @@
#define _XMEGA_NVM_
/* Includes: */
#include
<LUFA/Common/Common.h>
#if (ARCH == ARCH_AVR8)
#include
<avr/io.h>
#include
<avr/interrupt.h>
#elif (ARCH == ARCH_UC3)
#include
<avr32/io.h>
#endif
#include
<avr/io.h>
#include
<avr/interrupt.h>
#include
<stdbool.h>
#include
<LUFA/Common/Common.h>
#include
"XPROGProtocol.h"
#include
"XPROGTarget.h"
...
...
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
View file @
0b6d5467
...
...
@@ -60,7 +60,7 @@ void XPROGProtocol_SetMode(void)
struct
{
uint8_t
Protocol
;
}
ATTR_PACKED
SetMode_XPROG_Params
;
}
SetMode_XPROG_Params
;
Endpoint_Read_Stream_LE
(
&
SetMode_XPROG_Params
,
sizeof
(
SetMode_XPROG_Params
),
NULL
);
...
...
@@ -163,10 +163,10 @@ static void XPROGProtocol_Erase(void)
{
uint8_t
MemoryType
;
uint32_t
Address
;
}
ATTR_PACKED
Erase_XPROG_Params
;
}
Erase_XPROG_Params
;
Endpoint_Read_Stream_LE
(
&
Erase_XPROG_Params
,
sizeof
(
Erase_XPROG_Params
),
NULL
);
Erase_XPROG_Params
.
Address
=
be32_to_cpu
(
Erase_XPROG_Params
.
Address
);
Erase_XPROG_Params
.
Address
=
SwapEndian_32
(
Erase_XPROG_Params
.
Address
);
Endpoint_ClearOUT
();
Endpoint_SelectEndpoint
(
AVRISP_DATA_IN_EPNUM
);
...
...
@@ -242,12 +242,12 @@ static void XPROGProtocol_WriteMemory(void)
uint32_t
Address
;
uint16_t
Length
;
uint8_t
ProgData
[
256
];
}
ATTR_PACKED
WriteMemory_XPROG_Params
;
}
WriteMemory_XPROG_Params
;
Endpoint_Read_Stream_LE
(
&
WriteMemory_XPROG_Params
,
(
sizeof
(
WriteMemory_XPROG_Params
)
-
sizeof
(
WriteMemory_XPROG_Params
).
ProgData
),
NULL
);
WriteMemory_XPROG_Params
.
Address
=
be32_to_cpu
(
WriteMemory_XPROG_Params
.
Address
);
WriteMemory_XPROG_Params
.
Length
=
be16_to_cpu
(
WriteMemory_XPROG_Params
.
Length
);
WriteMemory_XPROG_Params
.
Address
=
SwapEndian_32
(
WriteMemory_XPROG_Params
.
Address
);
WriteMemory_XPROG_Params
.
Length
=
SwapEndian_16
(
WriteMemory_XPROG_Params
.
Length
);
Endpoint_Read_Stream_LE
(
&
WriteMemory_XPROG_Params
.
ProgData
,
WriteMemory_XPROG_Params
.
Length
,
NULL
);
// The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need
...
...
@@ -335,11 +335,11 @@ static void XPROGProtocol_ReadMemory(void)
uint8_t
MemoryType
;
uint32_t
Address
;
uint16_t
Length
;
}
ATTR_PACKED
ReadMemory_XPROG_Params
;
}
ReadMemory_XPROG_Params
;