mirror of https://github.com/arendst/Tasmota.git
45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
/*
|
|
* gpio_helper.c
|
|
*
|
|
* Created: 22/1/2016 15:28:48
|
|
* Author: akatran
|
|
*/
|
|
|
|
#include "gpio_helper.h"
|
|
|
|
/**
|
|
* Get the port corresponding in portnum. Default is PORTC.
|
|
*/
|
|
PORT_t * GPIO_getPort(int pinnum, uint8_t * pin_bm)
|
|
//PORT_t * GPIO_getPort(int portnum)
|
|
{
|
|
PORT_t * port = &PORTC;
|
|
if ( (pinnum >= XMEGA_PORTA_PIN0) && (pinnum<= XMEGA_PORTA_PIN7) )
|
|
{
|
|
port = &PORTA;
|
|
*pin_bm = (1<<pinnum);
|
|
}else if ( (pinnum >= XMEGA_PORTB_PIN0) && (pinnum<= XMEGA_PORTB_PIN7) )
|
|
{
|
|
port = &PORTB;
|
|
*pin_bm = (1<<(pinnum-8));
|
|
}else if ( (pinnum >= XMEGA_PORTC_PIN0) && (pinnum<= XMEGA_PORTC_PIN7) )
|
|
{
|
|
port = &PORTC;
|
|
*pin_bm = (1<<(pinnum-16));
|
|
}else if ( (pinnum >= XMEGA_PORTD_PIN0) && (pinnum<= XMEGA_PORTD_PIN7) )
|
|
{
|
|
port = &PORTD;
|
|
*pin_bm = (1<<(pinnum-24));
|
|
}else if ( (pinnum >= XMEGA_PORTE_PIN0) && (pinnum<= XMEGA_PORTE_PIN7) )
|
|
{
|
|
port = &PORTE;
|
|
*pin_bm = (1<<(pinnum-32));
|
|
}else if ( (pinnum >= XMEGA_PORTF_PIN0) && (pinnum<= XMEGA_PORTF_PIN7) )
|
|
{
|
|
port = &PORTF;
|
|
*pin_bm = (1<<(pinnum-40));
|
|
}
|
|
|
|
return port;
|
|
|
|
} |