/* * Code generated from Atmel Start. * * This file will be overwritten when reconfiguring your Atmel Start project. * Please copy examples or other code you want to keep to a separate file * to avoid losing it when reconfiguring. */ #include "driver_init.h" #include #include #include #include #include /*! The buffer size for USART */ #define USART_0_BUFFER_SIZE 16 struct usart_async_descriptor USART_0; struct spi_m_sync_descriptor SPI_0; static uint8_t USART_0_buffer[USART_0_BUFFER_SIZE]; void EXTERNAL_IRQ_0_init(void) { _gclk_enable_channel(EIC_GCLK_ID, CONF_GCLK_EIC_SRC); // Set pin direction to input gpio_set_pin_direction(PA00, GPIO_DIRECTION_IN); gpio_set_pin_pull_mode(PA00, // Pull configuration // pad_pull_config // Off // Pull-up // Pull-down GPIO_PULL_OFF); gpio_set_pin_function(PA00, PINMUX_PA00A_EIC_EXTINT0); ext_irq_init(); } /** * \brief USART Clock initialization function * * Enables register interface and peripheral clock */ void USART_0_CLOCK_init() { _pm_enable_bus_clock(PM_BUS_APBC, SERCOM0); _gclk_enable_channel(SERCOM0_GCLK_ID_CORE, CONF_GCLK_SERCOM0_CORE_SRC); } /** * \brief USART pinmux initialization function * * Set each required pin to USART functionality */ void USART_0_PORT_init() { gpio_set_pin_function(IN_UART_TX, PINMUX_PA08C_SERCOM0_PAD0); gpio_set_pin_function(OUT_UART_RX, PINMUX_PA09C_SERCOM0_PAD1); } /** * \brief USART initialization function * * Enables USART peripheral, clocks and initializes USART driver */ void USART_0_init(void) { USART_0_CLOCK_init(); usart_async_init(&USART_0, SERCOM0, USART_0_buffer, USART_0_BUFFER_SIZE, (void *)NULL); USART_0_PORT_init(); } void SPI_0_PORT_init(void) { // Set pin direction to input gpio_set_pin_direction(PA16, GPIO_DIRECTION_IN); gpio_set_pin_pull_mode(PA16, // Pull configuration // pad_pull_config // Off // Pull-up // Pull-down GPIO_PULL_OFF); gpio_set_pin_function(PA16, PINMUX_PA16C_SERCOM1_PAD0); gpio_set_pin_level(PA18, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(PA18, GPIO_DIRECTION_OUT); gpio_set_pin_function(PA18, PINMUX_PA18C_SERCOM1_PAD2); gpio_set_pin_level(PA19, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(PA19, GPIO_DIRECTION_OUT); gpio_set_pin_function(PA19, PINMUX_PA19C_SERCOM1_PAD3); } void SPI_0_CLOCK_init(void) { _pm_enable_bus_clock(PM_BUS_APBC, SERCOM1); _gclk_enable_channel(SERCOM1_GCLK_ID_CORE, CONF_GCLK_SERCOM1_CORE_SRC); } void SPI_0_init(void) { SPI_0_CLOCK_init(); spi_m_sync_init(&SPI_0, SERCOM1); SPI_0_PORT_init(); } void system_init(void) { init_mcu(); // GPIO on PA06 gpio_set_pin_level(OUT_LED_TX, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_LED_TX, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_LED_TX, GPIO_PIN_FUNCTION_OFF); // GPIO on PA07 gpio_set_pin_level(OUT_XBEE_REMOTE_RESET, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_XBEE_REMOTE_RESET, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_XBEE_REMOTE_RESET, GPIO_PIN_FUNCTION_OFF); // GPIO on PA14 gpio_set_pin_level(OUT_XBEE_HEARTBEAT, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_XBEE_HEARTBEAT, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_XBEE_HEARTBEAT, GPIO_PIN_FUNCTION_OFF); // GPIO on PA15 gpio_set_pin_level(OUT_LED_OTAU, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_LED_OTAU, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_LED_OTAU, GPIO_PIN_FUNCTION_OFF); // GPIO on PA17 gpio_set_pin_level(OUT_SPI_CS, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_SPI_CS, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_SPI_CS, GPIO_PIN_FUNCTION_OFF); // GPIO on PA27 gpio_set_pin_level(OUT_LED_LINK, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_LED_LINK, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_LED_LINK, GPIO_PIN_FUNCTION_OFF); // GPIO on PA28 gpio_set_pin_level(OUT_LED_RX, // Initial level // pad_initial_level // Low // High false); // Set pin direction to output gpio_set_pin_direction(OUT_LED_RX, GPIO_DIRECTION_OUT); gpio_set_pin_function(OUT_LED_RX, GPIO_PIN_FUNCTION_OFF); EXTERNAL_IRQ_0_init(); USART_0_init(); SPI_0_init(); }