forked from mfulz_github/qmk_firmware
Updated the AVRISP-MKII Clone programmer project to be compatible with the latest version of AVR Studio (version 5.1).
Changed the AVRISP-MKII Clone programmer project to report a fixed 3.3V VTARGET voltage on USB AVRs lacking an ADC instead of 5V to prevent warnings in AVR Studio 5.1 when programming XMEGA devices.
This commit is contained in:
parent
1482f77826
commit
18b82b3575
|
@ -37,6 +37,9 @@
|
||||||
* - Library Applications:
|
* - Library Applications:
|
||||||
* - Altered the Mass Storage Host LowLevel demo so that SCSI data STALLs from the attached device can be recovered from automatically without
|
* - Altered the Mass Storage Host LowLevel demo so that SCSI data STALLs from the attached device can be recovered from automatically without
|
||||||
* having to reset the Mass Storage interface
|
* having to reset the Mass Storage interface
|
||||||
|
* - Updated the AVRISP-MKII Clone programmer project to be compatible with the latest version of AVR Studio (version 5.1)
|
||||||
|
* - Changed the AVRISP-MKII Clone programmer project to report a fixed 3.3V VTARGET voltage on USB AVRs lacking an ADC instead of 5V to prevent
|
||||||
|
* warnings in AVR Studio 5.1 when programming XMEGA devices
|
||||||
*
|
*
|
||||||
* <b>Fixed:</b>
|
* <b>Fixed:</b>
|
||||||
* - Core:
|
* - Core:
|
||||||
|
|
|
@ -46,9 +46,9 @@
|
||||||
*
|
*
|
||||||
* Firmware for an AVRStudio compatible AVRISP-MKII clone programmer. This project will enable the USB AVR series of
|
* Firmware for an AVRStudio compatible AVRISP-MKII clone programmer. This project will enable the USB AVR series of
|
||||||
* microcontrollers to act as a clone of the official Atmel AVRISP-MKII programmer, usable within AVRStudio. In its
|
* microcontrollers to act as a clone of the official Atmel AVRISP-MKII programmer, usable within AVRStudio. In its
|
||||||
* most basic form, it allows for the programming of 5V AVRs from within AVRStudio with no special hardware other than
|
* most basic form, it allows for the programming of AVRs at the programmer's VCC voltage from within AVRStudio with
|
||||||
* the USB AVR and the parts needed for the USB interface. If the user desires, more advanced circuits incorporating
|
* no special hardware other than the USB AVR and the parts needed for the USB interface. If the user desires, more
|
||||||
* level conversion can be made to allow for the programming of 3.3V AVR designs.
|
* advanced circuits incorporating level conversion can be made to allow for the programming of 3.3V AVR designs.
|
||||||
*
|
*
|
||||||
* This device spoofs Atmel's official AVRISP-MKII device PID so that it remains compatible with Atmel's AVRISP-MKII
|
* This device spoofs Atmel's official AVRISP-MKII device PID so that it remains compatible with Atmel's AVRISP-MKII
|
||||||
* drivers. When prompted, direct your OS to install Atmel's AVRISP-MKII drivers provided with AVRStudio.
|
* drivers. When prompted, direct your OS to install Atmel's AVRISP-MKII drivers provided with AVRStudio.
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
*
|
*
|
||||||
* On AVR models with an ADC converter, AVCC should be tied to 5V (e.g. VBUS) and the \c VTARGET_ADC_CHANNEL token should be
|
* On AVR models with an ADC converter, AVCC should be tied to 5V (e.g. VBUS) and the \c VTARGET_ADC_CHANNEL token should be
|
||||||
* set to an appropriate ADC channel number in the project makefile for VTARGET detection to operate correctly. On models
|
* set to an appropriate ADC channel number in the project makefile for VTARGET detection to operate correctly. On models
|
||||||
* without an ADC converter, VTARGET will report a fixed 5V level at all times.
|
* without an ADC converter, VTARGET will report a fixed 3.3V level at all times.
|
||||||
*
|
*
|
||||||
* While this application can be compiled for USB AVRs with as little as 8KB of FLASH, for full functionality 16KB or more
|
* While this application can be compiled for USB AVRs with as little as 8KB of FLASH, for full functionality 16KB or more
|
||||||
* of FLASH is required. On 8KB devices, ISP or PDI/TPI programming support can be disabled to reduce program size.
|
* of FLASH is required. On 8KB devices, ISP or PDI/TPI programming support can be disabled to reduce program size.
|
||||||
|
@ -256,7 +256,7 @@
|
||||||
* <td>NO_VTARGET_DETECT</td>
|
* <td>NO_VTARGET_DETECT</td>
|
||||||
* <td>Makefile LUFA_OPTS</td>
|
* <td>Makefile LUFA_OPTS</td>
|
||||||
* <td>Define to disable VTARGET sampling and reporting on AVR models with an ADC converter. This will cause the programmer
|
* <td>Define to disable VTARGET sampling and reporting on AVR models with an ADC converter. This will cause the programmer
|
||||||
* to report a fixed 5V target voltage to the host regardless of the real target voltage. <i>Ignored when compiled for
|
* to report a fixed 3.3V target voltage to the host regardless of the real target voltage. <i>Ignored when compiled for
|
||||||
* targets lacking an ADC.</i></td>
|
* targets lacking an ADC.</i></td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
|
@ -285,19 +285,24 @@
|
||||||
* <td>LIBUSB_DRIVER_COMPAT</td>
|
* <td>LIBUSB_DRIVER_COMPAT</td>
|
||||||
* <td>Makefile LUFA_OPTS</td>
|
* <td>Makefile LUFA_OPTS</td>
|
||||||
* <td>Define to switch to a non-standard endpoint scheme, breaking compatibility with AVRStudio under Windows but making
|
* <td>Define to switch to a non-standard endpoint scheme, breaking compatibility with AVRStudio under Windows but making
|
||||||
* the code compatible with software such as avrdude (all platforms) that use the libUSB driver.
|
* the code compatible with software such as avrdude (all platforms) that use the libUSB driver.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
* <td>XCK_RESCUE_CLOCK_ENABLE</td>
|
* <td>XCK_RESCUE_CLOCK_ENABLE</td>
|
||||||
* <td>Makefile LUFA_OPTS</td>
|
* <td>Makefile LUFA_OPTS</td>
|
||||||
* <td>Define to move the ISP rescue clock to the AVR's XCK pin instead of the OCR1A output pin. This is useful for existing programming
|
* <td>Define to move the ISP rescue clock to the AVR's XCK pin instead of the OCR1A output pin. This is useful for existing programming
|
||||||
* hardware that does not expose the OCR1A pin of the AVR, but *may* cause some issues with PDI programming mode.
|
* hardware that does not expose the OCR1A pin of the AVR, but *may* cause some issues with PDI programming mode.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
* <td>INVERTED_ISP_MISO</td>
|
* <td>INVERTED_ISP_MISO</td>
|
||||||
* <td>Makefile LUFA_OPTS</td>
|
* <td>Makefile LUFA_OPTS</td>
|
||||||
* <td>Define to invert the received data on the ISP MISO line. This is sometimes needed depending on the level translation hardware used,
|
* <td>Define to invert the received data on the ISP MISO line. This is sometimes needed depending on the level translation hardware used,
|
||||||
* if the translator hardware inverts the received logic level.
|
* if the translator hardware inverts the received logic level.</td>
|
||||||
|
* </tr>
|
||||||
|
* <tr>
|
||||||
|
* <td>FIRMWARE_VERSION_MINOR</td>
|
||||||
|
* <td>Define to set the minor firmware revision nunber reported to the host on request. By default this will use a firmware version compatible
|
||||||
|
* with the latest Atmel IDE version, however if desired the reported minor value can be adjusted here.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* </table>
|
* </table>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -140,9 +140,9 @@ const USB_Descriptor_String_t PROGMEM LanguageString =
|
||||||
*/
|
*/
|
||||||
const USB_Descriptor_String_t PROGMEM ManufacturerString =
|
const USB_Descriptor_String_t PROGMEM ManufacturerString =
|
||||||
{
|
{
|
||||||
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
|
.Header = {.Size = USB_STRING_LEN(5), .Type = DTYPE_String},
|
||||||
|
|
||||||
.UnicodeString = L"Dean Camera"
|
.UnicodeString = L"ATMEL"
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
|
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
|
||||||
|
@ -151,9 +151,9 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
|
||||||
*/
|
*/
|
||||||
const USB_Descriptor_String_t PROGMEM ProductString =
|
const USB_Descriptor_String_t PROGMEM ProductString =
|
||||||
{
|
{
|
||||||
.Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String},
|
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
|
||||||
|
|
||||||
.UnicodeString = L"LUFA AVRISP MkII Clone"
|
.UnicodeString = L"AVRISP mkII"
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
|
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
|
||||||
|
@ -162,8 +162,8 @@ const USB_Descriptor_String_t PROGMEM ProductString =
|
||||||
const USB_Descriptor_String_t PROGMEM SerialString =
|
const USB_Descriptor_String_t PROGMEM SerialString =
|
||||||
{
|
{
|
||||||
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
|
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
|
||||||
|
|
||||||
.UnicodeString = L"0000A00128255"
|
.UnicodeString = L"000200012345\0" // Note: Real AVRISP-MKII has the embedded NUL byte, bug in firmware?
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
|
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
|
||||||
|
|
|
@ -60,11 +60,11 @@ static ParameterItem_t ParameterTable[] =
|
||||||
|
|
||||||
{ .ParamID = PARAM_SW_MINOR,
|
{ .ParamID = PARAM_SW_MINOR,
|
||||||
.ParamPrivileges = PARAM_PRIV_READ,
|
.ParamPrivileges = PARAM_PRIV_READ,
|
||||||
.ParamValue = 0x0D },
|
.ParamValue = FIRMWARE_VERSION_MINOR },
|
||||||
|
|
||||||
{ .ParamID = PARAM_VTARGET,
|
{ .ParamID = PARAM_VTARGET,
|
||||||
.ParamPrivileges = PARAM_PRIV_READ,
|
.ParamPrivileges = PARAM_PRIV_READ,
|
||||||
.ParamValue = 0x32 },
|
.ParamValue = (uint8_t)(3.3 * 10) },
|
||||||
|
|
||||||
{ .ParamID = PARAM_SCK_DURATION,
|
{ .ParamID = PARAM_SCK_DURATION,
|
||||||
.ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE,
|
.ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE,
|
||||||
|
|
|
@ -59,6 +59,12 @@
|
||||||
|
|
||||||
/** Total number of parameters in the parameter table */
|
/** Total number of parameters in the parameter table */
|
||||||
#define TABLE_PARAM_COUNT (sizeof(ParameterTable) / sizeof(ParameterTable[0]))
|
#define TABLE_PARAM_COUNT (sizeof(ParameterTable) / sizeof(ParameterTable[0]))
|
||||||
|
|
||||||
|
#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
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Type Defines: */
|
/* Type Defines: */
|
||||||
/** Type define for a parameter table entry indicating a PC readable or writable device parameter. */
|
/** Type define for a parameter table entry indicating a PC readable or writable device parameter. */
|
||||||
|
|
|
@ -455,6 +455,12 @@ static void XPROGProtocol_SetParam(void)
|
||||||
case XPRG_PARAM_NVMCSR_REG:
|
case XPRG_PARAM_NVMCSR_REG:
|
||||||
XPROG_Param_NVMCSRRegAddr = Endpoint_Read_8();
|
XPROG_Param_NVMCSRRegAddr = Endpoint_Read_8();
|
||||||
break;
|
break;
|
||||||
|
case XPRG_PARAM_UNKNOWN_1:
|
||||||
|
/* TODO: Undocumented parameter added in AVRStudio 5.1, purpose unknown. Must ACK and discard or
|
||||||
|
the communication with AVRStudio 5.1 will fail.
|
||||||
|
*/
|
||||||
|
Endpoint_Discard_16();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ReturnStatus = XPRG_ERR_FAILED;
|
ReturnStatus = XPRG_ERR_FAILED;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -49,6 +49,10 @@
|
||||||
|
|
||||||
/* Preprocessor Checks: */
|
/* Preprocessor Checks: */
|
||||||
#if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
|
#if ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
|
||||||
|
/* On the XPLAIN board, we only need PDI programming
|
||||||
|
for the ATXMEGA128A1 - disable ISP to prevent hardware
|
||||||
|
damage.
|
||||||
|
*/
|
||||||
#undef ENABLE_ISP_PROTOCOL
|
#undef ENABLE_ISP_PROTOCOL
|
||||||
|
|
||||||
#if !defined(ENABLE_XPROG_PROTOCOL)
|
#if !defined(ENABLE_XPROG_PROTOCOL)
|
||||||
|
@ -98,6 +102,7 @@
|
||||||
#define XPRG_PARAM_EEPPAGESIZE 0x02
|
#define XPRG_PARAM_EEPPAGESIZE 0x02
|
||||||
#define XPRG_PARAM_NVMCMD_REG 0x03
|
#define XPRG_PARAM_NVMCMD_REG 0x03
|
||||||
#define XPRG_PARAM_NVMCSR_REG 0x04
|
#define XPRG_PARAM_NVMCSR_REG 0x04
|
||||||
|
#define XPRG_PARAM_UNKNOWN_1 0x05
|
||||||
|
|
||||||
#define XPRG_PROTOCOL_PDI 0x00
|
#define XPRG_PROTOCOL_PDI 0x00
|
||||||
#define XPRG_PROTOCOL_JTAG 0x01
|
#define XPRG_PROTOCOL_JTAG 0x01
|
||||||
|
|
|
@ -145,6 +145,7 @@ LUFA_OPTS += -D VTARGET_SCALE_FACTOR=1
|
||||||
#LUFA_OPTS += -D LIBUSB_DRIVER_COMPAT
|
#LUFA_OPTS += -D LIBUSB_DRIVER_COMPAT
|
||||||
#LUFA_OPTS += -D XCK_RESCUE_CLOCK_ENABLE
|
#LUFA_OPTS += -D XCK_RESCUE_CLOCK_ENABLE
|
||||||
#LUFA_OPTS += -D INVERTED_ISP_MISO
|
#LUFA_OPTS += -D INVERTED_ISP_MISO
|
||||||
|
#LUFA_OPTS += -D FIRMWARE_VERSION_MINOR=0x11
|
||||||
|
|
||||||
|
|
||||||
# Create the LUFA source path variables by including the LUFA root makefile
|
# Create the LUFA source path variables by including the LUFA root makefile
|
||||||
|
|
|
@ -81,7 +81,7 @@ const AVRISP_USB_Descriptor_Configuration_t PROGMEM AVRISP_ConfigurationDescript
|
||||||
.ConfigurationNumber = 1,
|
.ConfigurationNumber = 1,
|
||||||
.ConfigurationStrIndex = NO_DESCRIPTOR,
|
.ConfigurationStrIndex = NO_DESCRIPTOR,
|
||||||
|
|
||||||
.ConfigAttributes = USB_CONFIG_ATTR_RESERVED,
|
.ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
|
||||||
|
|
||||||
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
|
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
|
||||||
},
|
},
|
||||||
|
@ -96,8 +96,8 @@ const AVRISP_USB_Descriptor_Configuration_t PROGMEM AVRISP_ConfigurationDescript
|
||||||
.TotalEndpoints = 2,
|
.TotalEndpoints = 2,
|
||||||
|
|
||||||
.Class = USB_CSCP_VendorSpecificClass,
|
.Class = USB_CSCP_VendorSpecificClass,
|
||||||
.SubClass = 0x00,
|
.SubClass = USB_CSCP_NoDeviceSubclass,
|
||||||
.Protocol = 0x00,
|
.Protocol = USB_CSCP_NoDeviceProtocol,
|
||||||
|
|
||||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||||
},
|
},
|
||||||
|
@ -140,9 +140,9 @@ const USB_Descriptor_String_t PROGMEM AVRISP_LanguageString =
|
||||||
*/
|
*/
|
||||||
const USB_Descriptor_String_t PROGMEM AVRISP_ManufacturerString =
|
const USB_Descriptor_String_t PROGMEM AVRISP_ManufacturerString =
|
||||||
{
|
{
|
||||||
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
|
.Header = {.Size = USB_STRING_LEN(5), .Type = DTYPE_String},
|
||||||
|
|
||||||
.UnicodeString = L"Dean Camera"
|
.UnicodeString = L"ATMEL"
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
|
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
|
||||||
|
@ -151,9 +151,9 @@ const USB_Descriptor_String_t PROGMEM AVRISP_ManufacturerString =
|
||||||
*/
|
*/
|
||||||
const USB_Descriptor_String_t PROGMEM AVRISP_ProductString =
|
const USB_Descriptor_String_t PROGMEM AVRISP_ProductString =
|
||||||
{
|
{
|
||||||
.Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String},
|
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
|
||||||
|
|
||||||
.UnicodeString = L"LUFA AVRISP MkII Clone"
|
.UnicodeString = L"AVRISP mkII"
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
|
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
|
||||||
|
@ -163,7 +163,7 @@ const USB_Descriptor_String_t PROGMEM AVRISP_SerialString =
|
||||||
{
|
{
|
||||||
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
|
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
|
||||||
|
|
||||||
.UnicodeString = L"0000A00128255"
|
.UnicodeString = L"000200053650\0"
|
||||||
};
|
};
|
||||||
|
|
||||||
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
|
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
|
||||||
|
@ -219,4 +219,3 @@ uint16_t AVRISP_GetDescriptor(const uint16_t wValue,
|
||||||
*DescriptorAddress = Address;
|
*DescriptorAddress = Address;
|
||||||
return Size;
|
return Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,12 @@
|
||||||
* <td>LIBUSB_DRIVER_COMPAT</td>
|
* <td>LIBUSB_DRIVER_COMPAT</td>
|
||||||
* <td>Makefile LUFA_OPTS</td>
|
* <td>Makefile LUFA_OPTS</td>
|
||||||
* <td>Define to switch to a non-standard endpoint scheme, breaking compatibility with AVRStudio under Windows but making
|
* <td>Define to switch to a non-standard endpoint scheme, breaking compatibility with AVRStudio under Windows but making
|
||||||
* the code compatible with software such as avrdude (all platforms) that use the libUSB driver.
|
* the code compatible with software such as avrdude (all platforms) that use the libUSB driver.</td>
|
||||||
|
* </tr>
|
||||||
|
* <tr>
|
||||||
|
* <td>FIRMWARE_VERSION_MINOR</td>
|
||||||
|
* <td>Define to set the minor firmware revision nunber reported to the host on request. By default this will use a firmware version compatible
|
||||||
|
* with the latest Atmel IDE version, however if desired the reported minor value can be adjusted here.</td>
|
||||||
* </tr>
|
* </tr>
|
||||||
* </table>
|
* </table>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -127,7 +127,7 @@ AVRISP_PATH = ../AVRISP-MKII
|
||||||
LUFA_OPTS = -D USB_DEVICE_ONLY
|
LUFA_OPTS = -D USB_DEVICE_ONLY
|
||||||
LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
|
LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0
|
||||||
LUFA_OPTS += -D ORDERED_EP_CONFIG
|
LUFA_OPTS += -D ORDERED_EP_CONFIG
|
||||||
LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
|
LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=16
|
||||||
LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
|
LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
|
||||||
LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
|
LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
|
||||||
LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
|
LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
|
||||||
|
@ -142,7 +142,7 @@ LUFA_OPTS += -D VTARGET_ADC_CHANNEL=2
|
||||||
LUFA_OPTS += -D VTARGET_REF_VOLTS=3.3
|
LUFA_OPTS += -D VTARGET_REF_VOLTS=3.3
|
||||||
LUFA_OPTS += -D VTARGET_SCALE_FACTOR=2
|
LUFA_OPTS += -D VTARGET_SCALE_FACTOR=2
|
||||||
#LUFA_OPTS += -D LIBUSB_DRIVER_COMPAT
|
#LUFA_OPTS += -D LIBUSB_DRIVER_COMPAT
|
||||||
|
#LUFA_OPTS += -D FIRMWARE_VERSION_MINOR=0x11
|
||||||
|
|
||||||
# Create the LUFA source path variables by including the LUFA root makefile
|
# Create the LUFA source path variables by including the LUFA root makefile
|
||||||
include $(LUFA_PATH)/LUFA/makefile
|
include $(LUFA_PATH)/LUFA/makefile
|
||||||
|
|
Loading…
Reference in New Issue