aboutsummaryrefslogtreecommitdiff
path: root/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c
diff options
context:
space:
mode:
authorDean Camera <[email protected]>2013-01-27 15:48:09 +0000
committerDean Camera <[email protected]>2013-01-27 15:48:09 +0000
commit0e64a9d0c290ff6eb504323dc3b30fdddefdcc85 (patch)
tree4d9494747759ff31c4cc6af2efbc3728bf88495b /LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c
parent3929cae00ea7fc0127ba0cde8db30e92ff713f87 (diff)
downloadqmk_firmware-0e64a9d0c290ff6eb504323dc3b30fdddefdcc85.tar.gz
qmk_firmware-0e64a9d0c290ff6eb504323dc3b30fdddefdcc85.zip
Update Atmel Studio core board templates to use different templates for each driver, so that the project caption contains the architecture. Update individual board modules to include the relevant board hardware drivers.
Diffstat (limited to 'LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c')
-rw-r--r--LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c b/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c
index 893c733a6e..e107c86801 100644
--- a/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c
+++ b/LUFA/CodeTemplates/DeviceTemplate/DeviceApplication.c
@@ -55,15 +55,30 @@ int main(void)
/** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void)
{
- /* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
- wdt_disable();
-
- /* Disable clock division */
- clock_prescale_set(clock_div_1);
-
- /* Hardware Initialization */
- USB_Init(USB_MODE_Device, USB_DEVICE_OPT_FULLSPEED | USB_OPT_AUTO_PLL);
+ #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);
+
+ /* Hardware Initialization */
+ USB_Init(USB_MODE_Device, USB_DEVICE_OPT_FULLSPEED | USB_OPT_AUTO_PLL);
+ #elif (ARCH == ARCH_XMEGA)
+ /* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */
+ XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU);
+ XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL);
+
+ /* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */
+ XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
+ XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB);
+
+ PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
+
+ /* Hardware Initialization */
+ USB_Init(USB_OPT_RC32MCLKSRC | USB_OPT_BUSEVENT_PRIHIGH);
+ #endif
}
/** Event handler for the library USB Connection event. */