Atmel ARM Mikrocontroller
SAM D10 Xplained Mini Board
GPIO Portpins einrichten
/* Project GPIO_02 * GPIO example SAM D10 Xplained board * Toggle the green and red LED if pushbutton1 or pushbutton2 pressed * LED green @ PA10 * LED red @ PA11 * Pushbutton 1 @ PA30 * Pushbutton 2 @ PA31 */ /* More info @ Quick Start Guide for PORT - Basic * http://asf.atmel.com/docs/3.24.2/saml21/html/asfdoc_sam0_port_basic_use_case.html */ #include // Include the Atmel Software Framework files #define GREEN_LED PIN_PA10 // ext. green LED #define RED_LED PIN_PA11 // ext. red LED #define BUTTON_1 PIN_PA30 // ext. Pushbutton 1 #define BUTTON_2 PIN_PA31 // ext. Pushbutton 2 void configure_port_pins(void); // Function prototype void configure_port_pins(void) // Function to config the port pins { struct port_config config_port_pin; // Create a PORT module pin configuration struct, which can be filled out to adjust the configuration of a single port pin port_get_config_defaults(&config_port_pin); // Initialize the pin configuration struct with the module's default values /* Config the pins connected to the green & red LED */ config_port_pin.direction = PORT_PIN_DIR_OUTPUT; // LEDs as output port_pin_set_config(GREEN_LED, &config_port_pin); // config green LED @ PA10 port_pin_set_config(RED_LED, &config_port_pin); // config red LED @ PA11 /* if you want to set 2 or more pins with one command use the funktion port_group_set_config() */ //port_group_set_config(&PORTA, 0xC00, &config_port_pin); // 0xC00 = Bitmask for Pin 10 and 11 ( 1100 0000 0000 ) /* Config the pushbuttons */ config_port_pin.direction = PORT_PIN_DIR_INPUT; // Pushbutton as input config_port_pin.input_pull = PORT_PIN_PULL_UP; // Pushbutton 1 on internal pull up resistor port_pin_set_config(BUTTON_1, &config_port_pin); // config pushbutton 1 @ PA30 config_port_pin.input_pull = PORT_PIN_PULL_DOWN; // Pushbutton 2 on internal pull down resistor port_pin_set_config(BUTTON_2, &config_port_pin); // config pushbutton 2 @ PA31 } int main (void) { system_init(); // Initialize system driver... delay_init(); // Initialize delay routines... configure_port_pins(); // configure the port pins while(1) { if(port_pin_get_input_level(BUTTON_1) == 0) // if button 1 pressed --> green LED is blinking { port_pin_toggle_output_level(GREEN_LED); // LED toggling delay_s(0.5); // wait 0.2 seconds } else if(port_pin_get_input_level(BUTTON_2) == 1) // if button 2 pressed --> red LED is blinking { port_pin_toggle_output_level(RED_LED); // LED toggling delay_s(0.2); // wait 0.2 seconds } } }