From feab7d426e148072ca89a0be39193eb1a4289d16 Mon Sep 17 00:00:00 2001 From: mtkrtk Date: Fri, 23 Sep 2016 14:43:06 +0900 Subject: [PATCH] Allow using PWM and MTU in the same time --- .../TARGET_RENESAS/TARGET_RZ_A1H/pwmout_api.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/hal/targets/hal/TARGET_RENESAS/TARGET_RZ_A1H/pwmout_api.c b/hal/targets/hal/TARGET_RENESAS/TARGET_RZ_A1H/pwmout_api.c index 2b7fc61e1a..6bcd519042 100644 --- a/hal/targets/hal/TARGET_RENESAS/TARGET_RZ_A1H/pwmout_api.c +++ b/hal/targets/hal/TARGET_RENESAS/TARGET_RZ_A1H/pwmout_api.c @@ -207,17 +207,11 @@ static int MAX_PERIOD[] = { 2000000, }; -typedef enum { - MODE_PWM = 0, - MODE_MTU2 -} PWMmode; - typedef enum { MTU2_PULSE = 0, MTU2_PERIOD } MTU2Signal; -static int pwm_mode = MODE_PWM; static uint16_t init_period_ch1 = 0; static uint16_t init_period_ch2 = 0; static uint16_t init_mtu2_period_ch[5] = {0}; @@ -234,7 +228,6 @@ void pwmout_init(pwmout_t* obj, PinName pin) { /* PWM by MTU2 */ int tmp_pwm; - pwm_mode = MODE_MTU2; // power on CPGSTBCR3 &= ~(CPG_STBCR3_BIT_MSTP33); @@ -269,7 +262,6 @@ void pwmout_init(pwmout_t* obj, PinName pin) { } } else { /* PWM */ - pwm_mode = MODE_PWM; // power on CPGSTBCR3 &= ~(CPG_STBCR3_BIT_MSTP30); @@ -306,7 +298,7 @@ void pwmout_write(pwmout_t* obj, float value) { uint32_t wk_cycle; uint16_t v; - if (pwm_mode == MODE_MTU2) { + if (obj->pwm >= MTU2_PWM_OFFSET) { /* PWM by MTU2 */ int tmp_pwm; @@ -347,7 +339,7 @@ float pwmout_read(pwmout_t* obj) { uint32_t wk_cycle; float value; - if (pwm_mode == MODE_MTU2) { + if (obj->pwm >= MTU2_PWM_OFFSET) { /* PWM by MTU2 */ uint32_t wk_pulse; int tmp_pwm; @@ -406,7 +398,7 @@ void pwmout_period_us(pwmout_t* obj, int us) { uint16_t wk_last_cycle; int max_us = 0; - if (pwm_mode == MODE_MTU2) { + if (obj->pwm >= MTU2_PWM_OFFSET) { /* PWM by MTU2 */ int tmp_pwm; uint16_t tmp_tgra; @@ -550,7 +542,7 @@ void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) { void pwmout_pulsewidth_us(pwmout_t* obj, int us) { float value = 0; - if (pwm_mode == MODE_MTU2) { + if (obj->pwm >= MTU2_PWM_OFFSET) { /* PWM by MTU2 */ if (mtu2_period_ch[obj->ch] != 0) { value = (float)us / (float)mtu2_period_ch[obj->ch];