/** * \file * * \brief Arduino Due/X board init. * * Copyright (c) 2011 - 2012 Atmel Corporation. All rights reserved. * * \asf_license_start * * \page License * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The name of Atmel may not be used to endorse or promote products derived * from this software without specific prior written permission. * * 4. This software may only be redistributed and used in connection with an * Atmel microcontroller product. * * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * \asf_license_stop * */ #include "compiler.h" #include "board.h" #include "conf_board.h" #include "gpio.h" void board_init(void) { #ifndef CONF_BOARD_KEEP_WATCHDOG_AT_INIT /* Disable the watchdog */ WDT->WDT_MR = WDT_MR_WDDIS; #endif /* Configure LED pins */ gpio_configure_pin(LED0_GPIO, LED0_FLAGS); gpio_configure_pin(LED1_GPIO, LED1_FLAGS); gpio_configure_pin(LED2_GPIO, LED2_FLAGS); /* Configure Push Button pins */ gpio_configure_pin(GPIO_PUSH_BUTTON_1, GPIO_PUSH_BUTTON_1_FLAGS); gpio_configure_pin(GPIO_PUSH_BUTTON_2, GPIO_PUSH_BUTTON_2_FLAGS); #ifdef CONF_BOARD_UART_CONSOLE /* Configure UART pins */ gpio_configure_group(PINS_UART_PIO, PINS_UART, PINS_UART_FLAGS); #endif /* Configure ADC example pins */ #ifdef CONF_BOARD_ADC /* TC TIOA configuration */ gpio_configure_pin(PIN_TC0_TIOA0,PIN_TC0_TIOA0_FLAGS); /* ADC Trigger configuration */ gpio_configure_pin(PINS_ADC_TRIG, PINS_ADC_TRIG_FLAG); /* PWMH0 configuration */ gpio_configure_pin(PIN_PWMC_PWMH0_TRIG, PIN_PWMC_PWMH0_TRIG_FLAG); #endif #ifdef CONF_BOARD_PWM_LED0 /* Configure PWM LED0 pin */ gpio_configure_pin(PIN_PWM_LED0_GPIO, PIN_PWM_LED0_FLAGS); #endif #ifdef CONF_BOARD_PWM_LED1 /* Configure PWM LED1 pin */ gpio_configure_pin(PIN_PWM_LED1_GPIO, PIN_PWM_LED1_FLAGS); #endif #ifdef CONF_BOARD_PWM_LED2 /* Configure PWM LED2 pin */ gpio_configure_pin(PIN_PWM_LED2_GPIO, PIN_PWM_LED2_FLAGS); #endif /* Configure SPI0 pins */ #ifdef CONF_BOARD_SPI0 gpio_configure_pin(SPI0_MISO_GPIO, SPI0_MISO_FLAGS); gpio_configure_pin(SPI0_MOSI_GPIO, SPI0_MOSI_FLAGS); gpio_configure_pin(SPI0_SPCK_GPIO, SPI0_SPCK_FLAGS); /** * For NPCS 1, 2, and 3, different PINs can be used to access the same * NPCS line. * Depending on the application requirements, the default PIN may not be * available. * Hence a different PIN should be selected using the * CONF_BOARD_SPI_NPCS_GPIO and * CONF_BOARD_SPI_NPCS_FLAGS macros. */ # ifdef CONF_BOARD_SPI0_NPCS0 gpio_configure_pin(SPI0_NPCS0_GPIO, SPI0_NPCS0_FLAGS); # endif # ifdef CONF_BOARD_SPI0_NPCS1 gpio_configure_pin(SPI0_NPCS1_PA29_GPIO,SPI0_NPCS1_PA29_FLAGS); # endif #endif // #ifdef CONF_BOARD_SPI0 /* Configure SPI1 pins */ #ifdef CONF_BOARD_SPI1 gpio_configure_pin(SPI1_MISO_GPIO, SPI1_MISO_FLAGS); gpio_configure_pin(SPI1_MOSI_GPIO, SPI1_MOSI_FLAGS); gpio_configure_pin(SPI1_SPCK_GPIO, SPI1_SPCK_FLAGS); # ifdef CONF_BOARD_SPI1_NPCS0 gpio_configure_pin(SPI1_NPCS0_GPIO, SPI1_NPCS0_FLAGS); # endif # ifdef CONF_BOARD_SPI1_NPCS1 gpio_configure_pin(SPI1_NPCS1_GPIO, SPI1_NPCS1_FLAGS); # endif # ifdef CONF_BOARD_SPI1_NPCS2 gpio_configure_pin(SPI1_NPCS2_GPIO, SPI1_NPCS2_FLAGS); # endif # ifdef CONF_BOARD_SPI1_NPCS3 gpio_configure_pin(SPI1_NPCS3_GPIO, SPI1_NPCS3_FLAGS); # endif #endif #ifdef CONF_BOARD_TWI0 gpio_configure_pin(TWI0_DATA_GPIO, TWI0_DATA_FLAGS); gpio_configure_pin(TWI0_CLK_GPIO, TWI0_CLK_FLAGS); #endif #ifdef CONF_BOARD_TWI1 gpio_configure_pin(TWI1_DATA_GPIO, TWI1_DATA_FLAGS); gpio_configure_pin(TWI1_CLK_GPIO, TWI1_CLK_FLAGS); #endif #ifdef CONF_BOARD_USART_RXD /* Configure USART RXD pin */ gpio_configure_pin(PIN_USART0_RXD_IDX, PIN_USART0_RXD_FLAGS); #endif #ifdef CONF_BOARD_USART_TXD /* Configure USART TXD pin */ gpio_configure_pin(PIN_USART0_TXD_IDX, PIN_USART0_TXD_FLAGS); #endif #ifdef CONF_BOARD_USB_PORT /* Configure USB_ID (UOTGID) pin */ gpio_configure_pin(USB_ID_GPIO, USB_ID_FLAGS); /* Configure USB_VBOF (UOTGVBOF) pin */ gpio_configure_pin(USB_VBOF_GPIO, USB_VBOF_FLAGS); #endif #ifdef CONF_BOARD_CAN0 /* Configure the CAN0 TX and RX pins. */ gpio_configure_pin(PIN_CAN0_RX_IDX, PIN_CAN0_RX_FLAGS); gpio_configure_pin(PIN_CAN0_TX_IDX, PIN_CAN0_TX_FLAGS); /* Configure the transiver0 RS & EN pins. */ gpio_configure_pin(PIN_CAN0_TR_RS_IDX, PIN_CAN0_TR_RS_FLAGS); gpio_configure_pin(PIN_CAN0_TR_EN_IDX, PIN_CAN0_TR_EN_FLAGS); #endif #ifdef CONF_BOARD_CAN1 /* Configure the CAN1 TX and RX pin. */ gpio_configure_pin(PIN_CAN1_RX_IDX, PIN_CAN1_RX_FLAGS); gpio_configure_pin(PIN_CAN1_TX_IDX, PIN_CAN1_TX_FLAGS); /* Configure the transiver1 RS & EN pins. */ //gpio_configure_pin(PIN_CAN1_TR_RS_IDX, PIN_CAN1_TR_RS_FLAGS); //gpio_configure_pin(PIN_CAN1_TR_EN_IDX, PIN_CAN1_TR_EN_FLAGS); #endif #ifdef CONF_BOARD_MMA7341L /* Configure MMA7341L mode set control pin */ gpio_configure_pin(PIN_MMA7341L_MODE, PIN_MMA7341L_MODE_FLAG); /* Configure MMA7341L x,y,z axis output voltage pin */ gpio_configure_pin(PIN_MMA7341L_X_AXIS, PIN_MMA7341L_X_AXIS_FLAG); gpio_configure_pin(PIN_MMA7341L_Y_AXIS, PIN_MMA7341L_Y_AXIS_FLAG); gpio_configure_pin(PIN_MMA7341L_Z_AXIS, PIN_MMA7341L_Z_AXIS_FLAG); #endif #ifdef CONF_BOARD_ADS7843 /* Configure Touchscreen SPI pins */ gpio_configure_pin(BOARD_ADS7843_IRQ_GPIO,BOARD_ADS7843_IRQ_FLAGS); gpio_configure_pin(BOARD_ADS7843_BUSY_GPIO, BOARD_ADS7843_BUSY_FLAGS); gpio_configure_pin(SPI0_MISO_GPIO, SPI0_MISO_FLAGS); gpio_configure_pin(SPI0_MOSI_GPIO, SPI0_MOSI_FLAGS); gpio_configure_pin(SPI0_SPCK_GPIO, SPI0_SPCK_FLAGS); gpio_configure_pin(SPI0_NPCS0_GPIO, SPI0_NPCS0_FLAGS); #endif }