Commit 0b6d5467 authored by Dean Camera's avatar Dean Camera
Browse files

Oops - revert commit of an incomplete port of the AVRISP-MKII project.

parent ea922c98
...@@ -45,14 +45,14 @@ int main(void) ...@@ -45,14 +45,14 @@ int main(void)
V2Protocol_Init(); V2Protocol_Init();
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
GlobalInterruptEnable(); sei();
for (;;) for (;;)
{ {
#if (BOARD == BOARD_USBTINYMKII) #if (BOARD == BOARD_USBTINYMKII)
/* On the USBTINY-MKII board target, there is a secondary LED which indicates the current selected /* On the USBTINY-MKII target, there is a secondary LED which indicates the current selected power
power mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */ mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
LEDs_ChangeLEDs(LEDS_LED3, (PIND & (1 << 0)) ? 0 : LEDS_LED3); LEDs_ChangeLEDs(LEDMASK_VBUSPOWER, (PIND & (1 << 0)) ? 0 : LEDMASK_VBUSPOWER);
#endif #endif
AVRISP_Task(); AVRISP_Task();
...@@ -63,35 +63,13 @@ int main(void) ...@@ -63,35 +63,13 @@ int main(void)
/** Configures the board hardware and chip peripherals for the demo's functionality. */ /** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void) void SetupHardware(void)
{ {
#if (ARCH == ARCH_AVR8) /* Disable watchdog if enabled by bootloader/fuses */
/* Disable watchdog if enabled by bootloader/fuses */ MCUSR &= ~(1 << WDRF);
MCUSR &= ~(1 << WDRF); wdt_disable();
wdt_disable();
/* Disable clock division */
/* Disable clock division */ clock_prescale_set(clock_div_1);
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
/* Hardware Initialization */ /* Hardware Initialization */
LEDs_Init(); LEDs_Init();
USB_Init(); USB_Init();
......
...@@ -37,7 +37,11 @@ ...@@ -37,7 +37,11 @@
#define _AVRISP_H_ #define _AVRISP_H_
/* Includes: */ /* 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/Version.h>
#include <LUFA/Drivers/Board/LEDs.h> #include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
...@@ -46,17 +50,6 @@ ...@@ -46,17 +50,6 @@
#include <LUFA/Drivers/Peripheral/ADC.h> #include <LUFA/Drivers/Peripheral/ADC.h>
#endif #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 "Descriptors.h"
#include "Lib/V2Protocol.h" #include "Lib/V2Protocol.h"
...@@ -76,6 +69,9 @@ ...@@ -76,6 +69,9 @@
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */ /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2) #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: */ /* Function Prototypes: */
void SetupHardware(void); void SetupHardware(void);
void AVRISP_Task(void); void AVRISP_Task(void);
......
...@@ -53,8 +53,8 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = ...@@ -53,8 +53,8 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = CPU_TO_LE16(0x03EB), .VendorID = 0x03EB,
.ProductID = CPU_TO_LE16(0x2104), .ProductID = 0x2104,
.ReleaseNumber = VERSION_BCD(02.00), .ReleaseNumber = VERSION_BCD(02.00),
.ManufacturerStrIndex = 0x01, .ManufacturerStrIndex = 0x01,
...@@ -75,7 +75,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = ...@@ -75,7 +75,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, .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, .TotalInterfaces = 1,
.ConfigurationNumber = 1, .ConfigurationNumber = 1,
...@@ -108,7 +108,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = ...@@ -108,7 +108,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | AVRISP_DATA_IN_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | AVRISP_DATA_IN_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = CPU_TO_LE16(AVRISP_DATA_EPSIZE), .EndpointSize = AVRISP_DATA_EPSIZE,
.PollingIntervalMS = 0x0A .PollingIntervalMS = 0x0A
}, },
...@@ -118,7 +118,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = ...@@ -118,7 +118,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | AVRISP_DATA_OUT_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | AVRISP_DATA_OUT_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = CPU_TO_LE16(AVRISP_DATA_EPSIZE), .EndpointSize = AVRISP_DATA_EPSIZE,
.PollingIntervalMS = 0x0A .PollingIntervalMS = 0x0A
}, },
}; };
...@@ -142,17 +142,7 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString = ...@@ -142,17 +142,7 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
{ {
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
.UnicodeString = {CPU_TO_LE16('D'), .UnicodeString = L"Dean Camera"
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')}
}; };
/** 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,
...@@ -163,28 +153,7 @@ const USB_Descriptor_String_t PROGMEM ProductString = ...@@ -163,28 +153,7 @@ const USB_Descriptor_String_t PROGMEM ProductString =
{ {
.Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String},
.UnicodeString = {CPU_TO_LE16('L'), .UnicodeString = L"LUFA AVRISP MkII Clone"
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')}
}; };
/** 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
...@@ -194,19 +163,7 @@ const USB_Descriptor_String_t PROGMEM SerialString = ...@@ -194,19 +163,7 @@ 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 = {CPU_TO_LE16('0'), .UnicodeString = L"0000A00128255"
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')}
}; };
/** 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"
......
...@@ -37,18 +37,11 @@ ...@@ -37,18 +37,11 @@
#define _DESCRIPTORS_H_ #define _DESCRIPTORS_H_
/* Includes: */ /* Includes: */
#include <LUFA/Common/Common.h> #include <avr/pgmspace.h>
#include <LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8) #include <LUFA/Drivers/USB/USB.h>
#include <avr/pgmspace.h>
#endif
/* Macros: */ /* Macros: */
#if (ARCH == ARCH_UC3) // TODO: FIXME
#define PROGMEM const
#endif
#if !defined(LIBUSB_DRIVER_COMPAT) #if !defined(LIBUSB_DRIVER_COMPAT)
/** Endpoint number of the AVRISP data OUT endpoint. */ /** Endpoint number of the AVRISP data OUT endpoint. */
#define AVRISP_DATA_OUT_EPNUM 2 #define AVRISP_DATA_OUT_EPNUM 2
...@@ -77,7 +70,7 @@ ...@@ -77,7 +70,7 @@
USB_Descriptor_Interface_t AVRISP_Interface; USB_Descriptor_Interface_t AVRISP_Interface;
USB_Descriptor_Endpoint_t AVRISP_DataInEndpoint; USB_Descriptor_Endpoint_t AVRISP_DataInEndpoint;
USB_Descriptor_Endpoint_t AVRISP_DataOutEndpoint; USB_Descriptor_Endpoint_t AVRISP_DataOutEndpoint;
} ATTR_PACKED USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
......
...@@ -52,7 +52,7 @@ void ISPProtocol_EnterISPMode(void) ...@@ -52,7 +52,7 @@ void ISPProtocol_EnterISPMode(void)
uint8_t PollValue; uint8_t PollValue;
uint8_t PollIndex; uint8_t PollIndex;
uint8_t EnterProgBytes[4]; uint8_t EnterProgBytes[4];
} ATTR_PACKED Enter_ISP_Params; } Enter_ISP_Params;
Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NULL); Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NULL);
...@@ -107,7 +107,7 @@ void ISPProtocol_LeaveISPMode(void) ...@@ -107,7 +107,7 @@ void ISPProtocol_LeaveISPMode(void)
{ {
uint8_t PreDelayMS; uint8_t PreDelayMS;
uint8_t PostDelayMS; uint8_t PostDelayMS;
} ATTR_PACKED Leave_ISP_Params; } Leave_ISP_Params;
Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NULL); Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NULL);
...@@ -141,12 +141,12 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command) ...@@ -141,12 +141,12 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
uint8_t ProgrammingCommands[3]; uint8_t ProgrammingCommands[3];
uint8_t PollValue1; uint8_t PollValue1;
uint8_t PollValue2; uint8_t PollValue2;
uint8_t ProgData[256]; // Note, the Jungo driver has a very short ACK timeout period, need to buffer the 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 } 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) - Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
sizeof(Write_Memory_Params.ProgData)), NULL); 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)) if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
{ {
...@@ -286,10 +286,10 @@ void ISPProtocol_ReadMemory(uint8_t V2Command) ...@@ -286,10 +286,10 @@ void ISPProtocol_ReadMemory(uint8_t V2Command)
{ {
uint16_t BytesToRead; uint16_t BytesToRead;
uint8_t ReadMemoryCommand; uint8_t ReadMemoryCommand;
} ATTR_PACKED Read_Memory_Params; } Read_Memory_Params;
Endpoint_Read_Stream_LE(&Read_Memory_Params, sizeof(Read_Memory_Params), NULL); 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_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM); Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
...@@ -360,7 +360,7 @@ void ISPProtocol_ChipErase(void) ...@@ -360,7 +360,7 @@ void ISPProtocol_ChipErase(void)
uint8_t EraseDelayMS; uint8_t EraseDelayMS;
uint8_t PollMethod; uint8_t PollMethod;
uint8_t EraseCommandBytes[4]; uint8_t EraseCommandBytes[4];
} ATTR_PACKED Erase_Chip_Params; } Erase_Chip_Params;
Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NULL); Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NULL);
...@@ -396,7 +396,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command) ...@@ -396,7 +396,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command)
{ {
uint8_t RetByte; uint8_t RetByte;
uint8_t ReadCommandBytes[4]; uint8_t ReadCommandBytes[4];
} ATTR_PACKED Read_FuseLockSigOSCCAL_Params; } Read_FuseLockSigOSCCAL_Params;
Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NULL); Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NULL);
...@@ -427,7 +427,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command) ...@@ -427,7 +427,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command)
struct struct
{ {
uint8_t WriteCommandBytes[4]; uint8_t WriteCommandBytes[4];
} ATTR_PACKED Write_FuseLockSig_Params; } Write_FuseLockSig_Params;
Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NULL); Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NULL);
...@@ -454,7 +454,7 @@ void ISPProtocol_SPIMulti(void) ...@@ -454,7 +454,7 @@ void ISPProtocol_SPIMulti(void)
uint8_t RxBytes; uint8_t RxBytes;
uint8_t RxStartAddr; uint8_t RxStartAddr;
uint8_t TxData[255]; 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, (sizeof(SPI_Multi_Params) - sizeof(SPI_Multi_Params.TxData)), NULL);
Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NULL); Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NULL);
......
...@@ -37,14 +37,10 @@ ...@@ -37,14 +37,10 @@
#define _ISP_PROTOCOL_ #define _ISP_PROTOCOL_
/* Includes: */ /* Includes: */
#include <LUFA/Common/Common.h> #include <avr/io.h>
#include <util/delay.h>
#include <LUFA/Drivers/USB/USB.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" #include "../V2Protocol.h"
......
...@@ -37,19 +37,12 @@ ...@@ -37,19 +37,12 @@
#define _ISP_TARGET_ #define _ISP_TARGET_
/* Includes: */ /* Includes: */
#include <LUFA/Common/Common.h> #include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Peripheral/SPI.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 "../V2ProtocolParams.h" #include "../V2ProtocolParams.h"
...@@ -91,7 +84,6 @@ ...@@ -91,7 +84,6 @@
const uint8_t ReadMemCommand); const uint8_t ReadMemCommand);
/* Inline Functions: */ /* 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 /** Sends a byte of ISP data to the attached target, using the appropriate SPI hardware or
* software routines depending on the selected ISP speed. * software routines depending on the selected ISP speed.
* *
...@@ -132,7 +124,6 @@ ...@@ -132,7 +124,6 @@
else else
return ISPTarget_TransferSoftSPIByte(Byte); return ISPTarget_TransferSoftSPIByte(Byte);
} }
#endif
#endif #endif
...@@ -42,17 +42,13 @@ uint32_t CurrentAddress; ...@@ -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 */ /** Flag to indicate that the next read/write operation must update the device's current extended FLASH address */
bool MustLoadExtendedAddress; 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 to manage timeouts whilst processing a V2Protocol command */
ISR(WDT_vect, ISR_BLOCK) ISR(WDT_vect, ISR_BLOCK)
{ {
TimeoutExpired = true; TimeoutExpired = true;
wdt_disable(); wdt_disable();
} }
#endif
/** Initialises the hardware and software associated with the V2 protocol command handling. */ /** Initialises the hardware and software associated with the V2 protocol command handling. */
void V2Protocol_Init(void) void V2Protocol_Init(void)
...@@ -79,12 +75,10 @@ void V2Protocol_ProcessCommand(void) ...@@ -79,12 +75,10 @@ void V2Protocol_ProcessCommand(void)
{ {
uint8_t V2Command = Endpoint_Read_8(); uint8_t V2Command = Endpoint_Read_8();
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/* Start the watchdog with timeout interrupt enabled to manage the timeout */ /* Start the watchdog with timeout interrupt enabled to manage the timeout */
TimeoutExpired = false; TimeoutExpired = false;
wdt_enable(WDTO_1S); wdt_enable(WDTO_1S);
WDTCSR |= (1 << WDIE); WDTCSR |= (1 << WDIE);
#endif
switch (V2Command) switch (V2Command)
{ {
...@@ -146,10 +140,8 @@ void V2Protocol_ProcessCommand(void) ...@@ -146,10 +140,8 @@ void V2Protocol_ProcessCommand(void)
break; break;
} }
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/* Disable the timeout management watchdog timer */ /* Disable the timeout management watchdog timer */
wdt_disable(); wdt_disable();
#endif
Endpoint_WaitUntilReady(); Endpoint_WaitUntilReady();
Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM); Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);
......
...@@ -37,17 +37,12 @@ ...@@ -37,17 +37,12 @@
#define _V2_PROTOCOL_ #define _V2_PROTOCOL_
/* Includes: */ /* Includes: */
#include <LUFA/Common/Common.h> #include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <LUFA/Drivers/USB/USB.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 "../Descriptors.h"
#include "V2ProtocolConstants.h" #include "V2ProtocolConstants.h"
#include "V2ProtocolParams.h" #include "V2ProtocolParams.h"
...@@ -74,13 +69,15 @@ ...@@ -74,13 +69,15 @@
/** Timeout period for each issued command from the host before it is aborted (in 10ms ticks). */ /** Timeout period for each issued command from the host before it is aborted (in 10ms ticks). */
#define COMMAND_TIMEOUT_TICKS 100 #define COMMAND_TIMEOUT_TICKS 100
/** Command timeout expiration flag, GPIOR for speed. */
#define TimeoutExpired GPIOR1
/** MUX mask for the VTARGET ADC channel number. */ /** MUX mask for the VTARGET ADC channel number. */
#define VTARGET_ADC_CHANNEL_MASK ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL) #define VTARGET_ADC_CHANNEL_MASK ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL)
/* External Variables: */ /* External Variables: */
extern uint32_t CurrentAddress;