Commit 5f3c4cc6 authored by Dean Camera's avatar Dean Camera
Browse files

Reverted modifications to USBInterrupt.h that were intefering with correct host mode operation.

Fixed SUSPI interrupt not being cleared during device mode enumeration, causing accidental mis-fires on re-enumeration.

Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode.
parent c459ef69
......@@ -80,7 +80,7 @@ BOARD = USBKEY
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
F_CPU = 8000000
# Input clock frequency.
......
......@@ -85,14 +85,14 @@
*
* \ingroup Group_Debugging
*/
#define JTAG_DEBUG_POINT() asm volatile ("NOP" ::)
#define JTAG_DEBUG_POINT() __asm__ volatile ("NOP" ::)
/** Defines an explicit JTAG break point in the resulting binary via the ASM BREAK statement. When
* a JTAG is used, this causes the program execution to halt when reached until manually resumed.
*
* \ingroup Group_Debugging
*/
#define JTAG_DEBUG_BREAK() asm volatile ("BREAK" ::)
#define JTAG_DEBUG_BREAK() __asm__ volatile ("BREAK" ::)
/** Macro for testing condition "x" and breaking via JTAG_DEBUG_BREAK() if the condition is false.
*
......
......@@ -203,6 +203,7 @@ static void USB_Init_Device(void)
ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
ENDPOINT_BANK_SINGLE);
USB_INT_Clear(USB_INT_SUSPI);
USB_INT_Enable(USB_INT_SUSPI);
USB_INT_Enable(USB_INT_EORSTI);
......
......@@ -34,7 +34,7 @@
void USB_INT_DisableAllInterrupts(void)
{
#if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
USBCON &= ~((1 << OTGPADE) | (1 << VBUSTE) | (1 << IDTE));
USBCON &= ~((1 << VBUSTE) | (1 << IDTE));
#elif defined(USB_SERIES_4_AVR)
USBCON &= ~(1 << VBUSTE);
#endif
......@@ -168,8 +168,6 @@ ISR(USB_GEN_vect, ISR_BLOCK)
#endif
#if defined(USB_CAN_BE_HOST)
bool MustResetInterface = false;
if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))
{
USB_INT_Clear(USB_INT_DDISCI);
......@@ -177,8 +175,8 @@ ISR(USB_GEN_vect, ISR_BLOCK)
USB_INT_Disable(USB_INT_DDISCI);
EVENT_USB_Host_DeviceUnattached();
MustResetInterface = true;
USB_ResetInterface();
}
if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))
......@@ -213,7 +211,7 @@ ISR(USB_GEN_vect, ISR_BLOCK)
EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);
EVENT_USB_Host_DeviceUnattached();
MustResetInterface = true;
USB_ResetInterface();
}
if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
......@@ -236,13 +234,10 @@ ISR(USB_GEN_vect, ISR_BLOCK)
EVENT_USB_Host_DeviceUnattached();
USB_CurrentMode = USB_GetUSBModeFromUID();
EVENT_USB_UIDChange();
USB_ResetInterface();
MustResetInterface = true;
EVENT_USB_UIDChange();
}
if (MustResetInterface)
USB_ResetInterface();
#endif
}
......
......@@ -57,6 +57,7 @@
* - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts
* - Fixed incorrect signature reported in the CDC class bootloader for the ATMEGA32U2
* - Fixed USB_Host_ClearPipeStall() incorrectly determining the endpoint direction from the currently selected pipe
* - Fixed JTAG_DEBUG_POINT() and JTAG_DEBUG_BREAK() macros not compiling under pure C99 standards mode
*
* \section Sec_ChangeLog100807 Version 100807
* <b>New:</b>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment