projects
/
pub
/
USBasp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
1a130ee
)
Implemented on-demand PLL clock generation for the U4, U6 and U7 series USB AVRs...
author
Dean Camera
<dean@fourwalledcubicle.com>
Tue, 15 Mar 2011 06:39:34 +0000
(06:39 +0000)
committer
Dean Camera
<dean@fourwalledcubicle.com>
Tue, 15 Mar 2011 06:39:34 +0000
(06:39 +0000)
LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
patch
|
blob
|
blame
|
history
LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c
patch
|
blob
|
blame
|
history
LUFA/ManPages/ChangeLog.txt
patch
|
blob
|
blame
|
history
diff --git
a/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
b/LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
index
18fa48a
..
8b41711
100644
(file)
--- a/
LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
+++ b/
LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.c
@@
-65,6
+65,13
@@
void USB_Init(
else
USB_REG_Off();
else
USB_REG_Off();
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))
+ {
+ #if defined(USB_SERIES_4_AVR)
+ PLLFRQ = ((1 << PLLUSB) | (1 << PDIV3) | (1 << PDIV1));
+ #endif
+ }
+
#if defined(USB_CAN_BE_BOTH)
if (Mode == USB_MODE_UID)
{
#if defined(USB_CAN_BE_BOTH)
if (Mode == USB_MODE_UID)
{
@@
-118,22
+125,9
@@
void USB_ResetInterface(void)
USB_Controller_Reset();
USB_Controller_Reset();
- if (!(USB_Options & USB_OPT_MANUAL_PLL))
- {
- #if defined(USB_SERIES_4_AVR)
- PLLFRQ = ((1 << PLLUSB) | (1 << PDIV3) | (1 << PDIV1));
- #endif
-
- USB_PLL_On();
- while (!(USB_PLL_IsReady()));
- }
-
#if defined(USB_CAN_BE_BOTH)
if (UIDModeSelectEnabled)
#if defined(USB_CAN_BE_BOTH)
if (UIDModeSelectEnabled)
- {
- UHWCON |= (1 << UIDE);
- USB_INT_Enable(USB_INT_IDTI);
- }
+ USB_INT_Enable(USB_INT_IDTI);
#endif
USB_CLK_Unfreeze();
#endif
USB_CLK_Unfreeze();
@@
-145,6
+139,16
@@
void USB_ResetInterface(void)
UHWCON |= (1 << UIMOD);
#endif
UHWCON |= (1 << UIMOD);
#endif
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))
+ {
+ #if defined(USB_SERIES_2_AVR)
+ USB_PLL_On();
+ while (!(USB_PLL_IsReady()));
+ #else
+ USB_PLL_Off();
+ #endif
+ }
+
USB_Init_Device();
#endif
}
USB_Init_Device();
#endif
}
@@
-153,6
+157,14
@@
void USB_ResetInterface(void)
#if defined(USB_CAN_BE_HOST)
UHWCON &= ~(1 << UIMOD);
#if defined(USB_CAN_BE_HOST)
UHWCON &= ~(1 << UIMOD);
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))
+ {
+ #if defined(USB_CAN_BE_HOST)
+ USB_PLL_On();
+ while (!(USB_PLL_IsReady()));
+ #endif
+ }
+
USB_Init_Host();
#endif
}
USB_Init_Host();
#endif
}
diff --git
a/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c
b/LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c
index
e983cde
..
856ccd6
100644
(file)
--- a/
LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c
+++ b/
LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c
@@
-90,11
+90,20
@@
ISR(USB_GEN_vect, ISR_BLOCK)
if (USB_VBUS_GetStatus())
{
if (USB_VBUS_GetStatus())
{
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))
+ {
+ USB_PLL_On();
+ while (!(USB_PLL_IsReady()));
+ }
+
USB_DeviceState = DEVICE_STATE_Powered;
EVENT_USB_Device_Connect();
}
else
{
USB_DeviceState = DEVICE_STATE_Powered;
EVENT_USB_Device_Connect();
}
else
{
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))
+ USB_PLL_Off();
+
USB_DeviceState = DEVICE_STATE_Unattached;
EVENT_USB_Device_Disconnect();
}
USB_DeviceState = DEVICE_STATE_Unattached;
EVENT_USB_Device_Disconnect();
}
diff --git
a/LUFA/ManPages/ChangeLog.txt
b/LUFA/ManPages/ChangeLog.txt
index
231920e
..
ea3efcd
100644
(file)
--- a/
LUFA/ManPages/ChangeLog.txt
+++ b/
LUFA/ManPages/ChangeLog.txt
@@
-58,6
+58,7
@@
* - Reduced latency for executing the Start-Of-Frame events (if enabled in the user application)
* - Removed Pipe_ClearErrorFlags(), pipe error flags are now automatically cleared when Pipe_ClearError() is called
* - Endpoint_ResetFIFO() renamed to Endpoint_ResetEndpoint(), to be consistent with the Pipe_ResetPipe() function name
* - Reduced latency for executing the Start-Of-Frame events (if enabled in the user application)
* - Removed Pipe_ClearErrorFlags(), pipe error flags are now automatically cleared when Pipe_ClearError() is called
* - Endpoint_ResetFIFO() renamed to Endpoint_ResetEndpoint(), to be consistent with the Pipe_ResetPipe() function name
+ * - Implemented on-demand PLL clock generation for the U4, U6 and U7 series USB AVRs when automatic PLL mode is specified
* - Library Applications:
* - Changed the XPLAINBridge software UART to use the regular timer CTC mode instead of the alternative CTC mode
* via the Input Capture register, to reduce user confusion
* - Library Applications:
* - Changed the XPLAINBridge software UART to use the regular timer CTC mode instead of the alternative CTC mode
* via the Input Capture register, to reduce user confusion