diff --git a/boards/frdm-k64f/include/periph_conf.h b/boards/frdm-k64f/include/periph_conf.h index 871a5ebe6cc9cb1cd492449bd9a182b19d19cac4..95404a83598e9d970a88cd8f28e47e358ae6116a 100644 --- a/boards/frdm-k64f/include/periph_conf.h +++ b/boards/frdm-k64f/include/periph_conf.h @@ -131,28 +131,22 @@ static const adc_conf_t adc_config[] = { #define PWM_0_CLK CLOCK_CORECLOCK #define PWM_0_CLKEN() (SIM->SCGC6 |= (SIM_SCGC6_FTM0_MASK)) #define PWM_0_CLKDIS() (SIM->SCGC6 &= ~(SIM_SCGC6_FTM0_MASK)) -/* PWM 0 pin configuration */ -#define PWM_0_PORT_CLKEN() (SIM->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTC_MASK)) /* Arduino Connector D3 */ -#define PWM_0_PORT_CH0 PORTA -#define PWM_0_PIN_CH0 1 -#define PWM_0_FTMCHAN_CH0 6 -#define PWM_0_PIN_AF_CH0 3 +#define PWM_0_CH0_GPIO GPIO_PIN(PORT_A, 1) +#define PWM_0_CH0_FTMCHAN 6 +#define PWM_0_CH0_AF 3 /* Arduino Connector D5 */ -#define PWM_0_PORT_CH1 PORTA -#define PWM_0_PIN_CH1 2 -#define PWM_0_FTMCHAN_CH1 7 -#define PWM_0_PIN_AF_CH1 3 +#define PWM_0_CH1_GPIO GPIO_PIN(PORT_A, 2) +#define PWM_0_CH1_FTMCHAN 7 +#define PWM_0_CH1_AF 3 /* Arduino Connector D6 */ -#define PWM_0_PORT_CH2 PORTC -#define PWM_0_PIN_CH2 2 -#define PWM_0_FTMCHAN_CH2 1 -#define PWM_0_PIN_AF_CH2 4 +#define PWM_0_CH2_GPIO GPIO_PIN(PORT_C, 2) +#define PWM_0_CH2_FTMCHAN 1 +#define PWM_0_CH2_AF 4 /* Arduino Connector D7 */ -#define PWM_0_PORT_CH3 PORTC -#define PWM_0_PIN_CH3 3 -#define PWM_0_FTMCHAN_CH3 2 -#define PWM_0_PIN_AF_CH3 4 +#define PWM_0_CH3_GPIO GPIO_PIN(PORT_C, 3) +#define PWM_0_CH3_FTMCHAN 2 +#define PWM_0_CH3_AF 4 /** @} */ diff --git a/boards/mulle/include/periph_conf.h b/boards/mulle/include/periph_conf.h index ad05843e966dd198c63f1e7939dd4b082b27ad23..73a607a9e4787acea2b104f9ca67035a6de3ef0a 100644 --- a/boards/mulle/include/periph_conf.h +++ b/boards/mulle/include/periph_conf.h @@ -171,17 +171,13 @@ static const adc_conf_t adc_config[] = { #define PWM_0_CLKDIS() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_FTM0_SHIFT) = 0) /* PWM 0 pin configuration */ -#define PWM_0_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTC_SHIFT) = 1) +#define PWM_0_CH0_GPIO GPIO_PIN(PORT_C, 1) +#define PWM_0_CH0_FTMCHAN 0 +#define PWM_0_CH0_AF 4 -#define PWM_0_PIN_CH0 1 -#define PWM_0_FTMCHAN_CH0 0 -#define PWM_0_PORT_CH0 PORTC -#define PWM_0_PIN_AF_CH0 4 - -#define PWM_0_PIN_CH1 2 -#define PWM_0_FTMCHAN_CH1 1 -#define PWM_0_PORT_CH1 PORTC -#define PWM_0_PIN_AF_CH1 4 +#define PWM_0_CH1_GPIO GPIO_PIN(PORT_C, 2) +#define PWM_0_CH1_FTMCHAN 1 +#define PWM_0_CH1_AF 4 /* PWM 1 device configuration */ #define PWM_1_DEV FTM1 @@ -191,21 +187,16 @@ static const adc_conf_t adc_config[] = { #define PWM_1_CLKDIS() (BITBAND_REG32(SIM->SCGC6, SIM_SCGC6_FTM1_SHIFT) = 0) /* PWM 1 pin configuration */ -#define PWM_1_PORT_CLKEN() (BITBAND_REG32(SIM->SCGC5, SIM_SCGC5_PORTA_SHIFT) = 1) - -#define PWM_1_PIN_CH0 12 -#define PWM_1_FTMCHAN_CH0 0 -#define PWM_1_PORT_CH0 PORTA -#define PWM_1_PIN_AF_CH0 3 +#define PWM_1_CH0_GPIO GPIO_PIN(PORT_A, 12) +#define PWM_1_CH0_FTMCHAN 0 +#define PWM_1_CH0_AF 3 -#define PWM_1_PIN_CH1 13 -#define PWM_1_FTMCHAN_CH1 1 -#define PWM_1_PORT_CH1 PORTA -#define PWM_1_PIN_AF_CH1 3 +#define PWM_1_CH1_GPIO GPIO_PIN(PORT_A, 13) +#define PWM_1_CH1_FTMCHAN 1 +#define PWM_1_CH1_AF 3 /** @} */ - /** * @name SPI configuration * @{ diff --git a/boards/pba-d-01-kw2x/include/periph_conf.h b/boards/pba-d-01-kw2x/include/periph_conf.h index d3aa4460f38ef38931115a593e25da4c3826d323..0419e2944f3aa52a1f2ba7025b4aedbb0291502d 100644 --- a/boards/pba-d-01-kw2x/include/periph_conf.h +++ b/boards/pba-d-01-kw2x/include/periph_conf.h @@ -149,27 +149,22 @@ static const adc_conf_t adc_config[] = { #define PWM_0_CLKEN() (SIM->SCGC6 |= (SIM_SCGC6_FTM0_MASK)) #define PWM_0_CLKDIS() (SIM->SCGC6 &= ~(SIM_SCGC6_FTM0_MASK)) /* PWM 0 pin configuration */ -#define PWM_0_PORT_CLKEN() (SIM->SCGC5 |= (SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTA_MASK)) - -#define PWM_0_PIN_CH0 4 -#define PWM_0_FTMCHAN_CH0 1 -#define PWM_0_PORT_CH0 PORTA -#define PWM_0_PIN_AF_CH0 3 - -#define PWM_0_PIN_CH1 4 -#define PWM_0_FTMCHAN_CH1 4 -#define PWM_0_PORT_CH1 PORTD -#define PWM_0_PIN_AF_CH1 4 - -#define PWM_0_PIN_CH2 6 -#define PWM_0_FTMCHAN_CH2 6 -#define PWM_0_PORT_CH2 PORTD -#define PWM_0_PIN_AF_CH2 4 - -#define PWM_0_PIN_CH3 1 -#define PWM_0_FTMCHAN_CH3 1 -#define PWM_0_PORT_CH3 PORTA -#define PWM_0_PIN_AF_CH3 3 + +#define PWM_0_CH0_GPIO GPIO_PIN(PORT_A, 4) +#define PWM_0_CH0_FTMCHAN 1 +#define PWM_0_CH0_AF 3 + +#define PWM_0_CH1_GPIO GPIO_PIN(PORT_D, 4) +#define PWM_0_CH1_FTMCHAN 4 +#define PWM_0_CH1_AF 4 + +#define PWM_0_CH2_GPIO GPIO_PIN(PORT_D, 6) +#define PWM_0_CH2_FTMCHAN 6 +#define PWM_0_CH2_AF 4 + +#define PWM_0_CH3_GPIO GPIO_PIN(PORT_A, 1) +#define PWM_0_CH3_FTMCHAN 1 +#define PWM_0_CH3_AF 3 /** @} */ diff --git a/cpu/kinetis_common/periph/pwm.c b/cpu/kinetis_common/periph/pwm.c index 2cae27e7d863d1d25ba64281f1e3df631b89b732..75da1da4f7f3e5ddd7db1b3fa50f11e1707fded8 100644 --- a/cpu/kinetis_common/periph/pwm.c +++ b/cpu/kinetis_common/periph/pwm.c @@ -1,7 +1,7 @@ /* * Copyright (C) 2014 Freie Universität Berlin * Copyright (C) 2014 PHYTEC Messtechnik GmbH - * Copyright (C) 2015 Eistec AB + * Copyright (C) 2015-2016 Eistec AB * * This file is subject to the terms and conditions of the GNU Lesser General * Public License v2.1. See the file LICENSE in the top level directory for more @@ -35,56 +35,56 @@ #if PWM_0_EN static const uint8_t ftm0chan[] = { #if PWM_0_CHANNELS > 0 - PWM_0_FTMCHAN_CH0, + PWM_0_CH0_FTMCHAN, #endif #if PWM_0_CHANNELS > 1 - PWM_0_FTMCHAN_CH1, + PWM_0_CH1_FTMCHAN, #endif #if PWM_0_CHANNELS > 2 - PWM_0_FTMCHAN_CH2, + PWM_0_CH2_FTMCHAN, #endif #if PWM_0_CHANNELS > 3 - PWM_0_FTMCHAN_CH3, + PWM_0_CH3_FTMCHAN, #endif #if PWM_0_CHANNELS > 4 - PWM_0_FTMCHAN_CH4, + PWM_0_CH4_FTMCHAN, #endif #if PWM_0_CHANNELS > 5 - PWM_0_FTMCHAN_CH5, + PWM_0_CH5_FTMCHAN, #endif #if PWM_0_CHANNELS > 6 - PWM_0_FTMCHAN_CH6, + PWM_0_CH6_FTMCHAN, #endif #if PWM_0_CHANNELS > 7 - PWM_0_FTMCHAN_CH7, + PWM_0_CH7_FTMCHAN, #endif }; #endif #if PWM_1_EN static const uint8_t ftm1chan[] = { #if PWM_1_CHANNELS > 0 - PWM_1_FTMCHAN_CH0, + PWM_1_CH0_FTMCHAN, #endif #if PWM_1_CHANNELS > 1 - PWM_1_FTMCHAN_CH1, + PWM_1_CH1_FTMCHAN, #endif #if PWM_1_CHANNELS > 2 - PWM_1_FTMCHAN_CH2, + PWM_1_CH2_FTMCHAN, #endif #if PWM_1_CHANNELS > 3 - PWM_1_FTMCHAN_CH3, + PWM_1_CH3_FTMCHAN, #endif #if PWM_1_CHANNELS > 4 - PWM_1_FTMCHAN_CH4, + PWM_1_CH4_FTMCHAN, #endif #if PWM_1_CHANNELS > 5 - PWM_1_FTMCHAN_CH5, + PWM_1_CH5_FTMCHAN, #endif #if PWM_1_CHANNELS > 6 - PWM_1_FTMCHAN_CH6, + PWM_1_CH6_FTMCHAN, #endif #if PWM_1_CHANNELS > 7 - PWM_1_FTMCHAN_CH7, + PWM_1_CH7_FTMCHAN, #endif }; #endif @@ -158,60 +158,58 @@ uint32_t pwm_init(pwm_t dev, pwm_mode_t mode, uint32_t freq, uint16_t res) #if PWM_0_EN case PWM_0: - PWM_0_PORT_CLKEN(); #if PWM_0_CHANNELS > 0 - PWM_0_PORT_CH0->PCR[PWM_0_PIN_CH0] = PORT_PCR_MUX(PWM_0_PIN_AF_CH0); + gpio_init_port(PWM_0_CH0_GPIO, PORT_PCR_MUX(PWM_0_CH0_AF)); #endif #if PWM_0_CHANNELS > 1 - PWM_0_PORT_CH1->PCR[PWM_0_PIN_CH1] = PORT_PCR_MUX(PWM_0_PIN_AF_CH1); + gpio_init_port(PWM_0_CH1_GPIO, PORT_PCR_MUX(PWM_0_CH1_AF)); #endif #if PWM_0_CHANNELS > 2 - PWM_0_PORT_CH2->PCR[PWM_0_PIN_CH2] = PORT_PCR_MUX(PWM_0_PIN_AF_CH2); + gpio_init_port(PWM_0_CH2_GPIO, PORT_PCR_MUX(PWM_0_CH2_AF)); #endif #if PWM_0_CHANNELS > 3 - PWM_0_PORT_CH3->PCR[PWM_0_PIN_CH3] = PORT_PCR_MUX(PWM_0_PIN_AF_CH3); + gpio_init_port(PWM_0_CH3_GPIO, PORT_PCR_MUX(PWM_0_CH3_AF)); #endif #if PWM_0_CHANNELS > 4 - PWM_0_PORT_CH4->PCR[PWM_0_PIN_CH4] = PORT_PCR_MUX(PWM_0_PIN_AF_CH4); + gpio_init_port(PWM_0_CH4_GPIO, PORT_PCR_MUX(PWM_0_CH4_AF)); #endif #if PWM_0_CHANNELS > 5 - PWM_0_PORT_CH5->PCR[PWM_0_PIN_CH5] = PORT_PCR_MUX(PWM_0_PIN_AF_CH5); + gpio_init_port(PWM_0_CH5_GPIO, PORT_PCR_MUX(PWM_0_CH5_AF)); #endif #if PWM_0_CHANNELS > 6 - PWM_0_PORT_CH6->PCR[PWM_0_PIN_CH6] = PORT_PCR_MUX(PWM_0_PIN_AF_CH6); + gpio_init_port(PWM_0_CH6_GPIO, PORT_PCR_MUX(PWM_0_CH6_AF)); #endif #if PWM_0_CHANNELS > 7 - PWM_0_PORT_CH7->PCR[PWM_0_PIN_CH7] = PORT_PCR_MUX(PWM_0_PIN_AF_CH7); + gpio_init_port(PWM_0_CH7_GPIO, PORT_PCR_MUX(PWM_0_CH7_AF)); #endif break; #endif #if PWM_1_EN case PWM_1: - PWM_1_PORT_CLKEN(); #if PWM_1_CHANNELS > 0 - PWM_1_PORT_CH0->PCR[PWM_1_PIN_CH0] = PORT_PCR_MUX(PWM_1_PIN_AF_CH0); + gpio_init_port(PWM_1_CH0_GPIO, PORT_PCR_MUX(PWM_1_CH0_AF)); #endif #if PWM_1_CHANNELS > 1 - PWM_1_PORT_CH1->PCR[PWM_1_PIN_CH1] = PORT_PCR_MUX(PWM_1_PIN_AF_CH1); + gpio_init_port(PWM_1_CH1_GPIO, PORT_PCR_MUX(PWM_1_CH1_AF)); #endif #if PWM_1_CHANNELS > 2 - PWM_1_PORT_CH2->PCR[PWM_1_PIN_CH2] = PORT_PCR_MUX(PWM_1_PIN_AF_CH2); + gpio_init_port(PWM_1_CH2_GPIO, PORT_PCR_MUX(PWM_1_CH2_AF)); #endif #if PWM_1_CHANNELS > 3 - PWM_1_PORT_CH3->PCR[PWM_1_PIN_CH3] = PORT_PCR_MUX(PWM_1_PIN_AF_CH3); + gpio_init_port(PWM_1_CH3_GPIO, PORT_PCR_MUX(PWM_1_CH3_AF)); #endif #if PWM_1_CHANNELS > 4 - PWM_1_PORT_CH4->PCR[PWM_1_PIN_CH4] = PORT_PCR_MUX(PWM_1_PIN_AF_CH4); + gpio_init_port(PWM_1_CH4_GPIO, PORT_PCR_MUX(PWM_1_CH4_AF)); #endif #if PWM_1_CHANNELS > 5 - PWM_1_PORT_CH5->PCR[PWM_1_PIN_CH5] = PORT_PCR_MUX(PWM_1_PIN_AF_CH5); + gpio_init_port(PWM_1_CH5_GPIO, PORT_PCR_MUX(PWM_1_CH5_AF)); #endif #if PWM_1_CHANNELS > 6 - PWM_1_PORT_CH6->PCR[PWM_1_PIN_CH6] = PORT_PCR_MUX(PWM_1_PIN_AF_CH6); + gpio_init_port(PWM_1_CH6_GPIO, PORT_PCR_MUX(PWM_1_CH6_AF)); #endif #if PWM_1_CHANNELS > 7 - PWM_1_PORT_CH7->PCR[PWM_1_PIN_CH7] = PORT_PCR_MUX(PWM_1_PIN_AF_CH7); + gpio_init_port(PWM_1_CH7_GPIO, PORT_PCR_MUX(PWM_1_CH7_AF)); #endif break; #endif