/* * board.c * * Created: 2014-11-25 08:29:26 * Author: bpa * initialization and ON/OFF functions for chip_mini_xmega board */ //leds init #include void leds_init() { PORTB.DIRSET = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm; } void led0(uint8_t mode) //mode=0 OFF led, mode=1 ON led, mode=2 toggle led { if (mode==0) PORTB.OUTCLR = PIN0_bm; if (mode==1) PORTB.OUTSET = PIN0_bm; if (mode==2) PORTB.OUTTGL = PIN0_bm; } void led1(uint8_t mode) //mode=0 OFF led, mode=1 ON led, mode=2 toggle led { if (mode==0) PORTB.OUTCLR = PIN1_bm; if (mode==1) PORTB.OUTSET = PIN1_bm; if (mode==2) PORTB.OUTTGL = PIN1_bm; } void led2(uint8_t mode) //mode=0 OFF led, mode=1 ON led, mode=2 toggle led { if (mode==0) PORTB.OUTCLR = PIN2_bm; if (mode==1) PORTB.OUTSET = PIN2_bm; if (mode==2) PORTB.OUTTGL = PIN2_bm; } void led3(uint8_t mode) //mode=0 OFF led, mode=1 ON led, mode=2 toggle led { if (mode==0) PORTB.OUTCLR = PIN3_bm; if (mode==1) PORTB.OUTSET = PIN3_bm; if (mode==2) PORTB.OUTTGL = PIN3_bm; } //pushbuttons init without IRQ void pb_init() { PORTC.DIRCLR = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm; PORTCFG.MPCMASK = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm; PORTC.PIN0CTRL = PORT_OPC_PULLUP_gc; } //pushbuttons init with IRQ void pb_irq_init() { PORTC.DIRCLR = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm; PORTCFG.MPCMASK = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm; PORTC.PIN0CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_BOTHEDGES_gc;//PORT_ISC_FALLING_gc; // pins [0-3] pullup and falling edge irq request PORTC.INT0MASK = PIN0_bm | PIN1_bm; // pins [0-1] call INT0 PORTC.INT1MASK = PIN2_bm | PIN3_bm; // pins [2-3] call INT1 PORTC.INTCTRL = PORT_INT0LVL_MED_gc | // Medium level of INT0 irq PORT_INT1LVL_LO_gc; // and low irq level for INT1 irq } uint8_t pb0_pressed() // returns 0 if not pressed, 1 if pressed { if (PORTC.IN & PIN0_bm) return 0; else return 1; } uint8_t pb1_pressed() // returns 0 if not pressed, 1 if pressed { if (PORTC.IN & PIN1_bm) return 0; else return 1; } uint8_t pb2_pressed() // returns 0 if not pressed, 1 if pressed { if (PORTC.IN & PIN2_bm) return 0; else return 1; } int8_t pb3_pressed() // returns 0 if not pressed, 1 if pressed { if (PORTC.IN & PIN3_bm) return 0; else return 1; }