/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { #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); #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; #endif /* Hardware Initialization */ LEDs_Init(); USB_Init(); }
/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { #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); #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; #endif /* Hardware Initialization */ //i2c TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 400000)); //button ports init buttons_init(); //timer init TCCR1B |=(1<<CS10)|(1<<CS12);//prescaler 1024 TCNT1 = 0;//init counter //screen setup - software spi, sh1106 driver (sh1306 analog) /* Atmega32U4 mapping: SCK (D0) - PORTB, PIN1 == PN(1, 1) MOSI (D1) - PORTB, PIN2 RES (RST) - PORTB, PIN0 A0 (DC) - PORTB, PIN5 (OC1A/#A9) */ display_init(); display_draw_logo(); //sensors initialization adxl345_init(MEASURE_ON, RANGE_2G, ODR_800); l3g4200d_init(FIFO_HI_LO_PASS, NORM_ODR_800); hmc5883l_init(MODE_CONT, GAIN_4_7, NORM_75HZ_8AV); USB_Init(); }
/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { // 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(); }
/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* 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; // EXOR Gatter PORTE.DIRSET = PIN0_bm; PORTE.DIRSET = PIN1_bm; // PORTE.OUTSET = PIN0_bm; // V1.0 PORTE.OUTCLR = PIN0_bm; // V1.1 PORTE.OUTCLR = PIN1_bm; // LED PORTA.DIRSET = PIN2_bm; // Red PORTA.DIRSET = PIN3_bm; // Green PORTA.DIRSET = PIN4_bm; // Blue // LEDS OFF PORTA.OUTSET = PIN2_bm; PORTA.OUTCLR = PIN3_bm; PORTA.OUTSET = PIN4_bm; /* Hardware Initialization */ // USART RX/TX 1 /* PIN3 (TXD0) as output. */ PORTE.DIRSET = PIN3_bm; /* PC2 (RXD0) as input. */ PORTE.DIRCLR = PIN2_bm; USART_InterruptDriver_Initialize(&USART_data, &USART, USART_DREINTLVL_OFF_gc); USART_RxdInterruptLevel_Set(USART_data.usart, USART_RXCINTLVL_LO_gc); /* Enable global interrupts. */ sei(); USB_Init(); }
/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { #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); #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; #endif /* Hardware Initialization */ LEDs_Init(); Joystick_Init(); Buttons_Init(); Dataflash_Init(); USB_Init(); /* Check if the Dataflash is working, abort if not */ if (!(DataflashManager_CheckDataflashOperation())) { LEDs_SetAllLEDs(LEDMASK_USB_ERROR); for(;;); } /* Clear Dataflash sector protections, if enabled */ DataflashManager_ResetDataflashProtections(); }