Skip to content

Commit 0512889

Browse files
committed
pwmout - M480 - add read methods for period and pulsewidth
1 parent bdfe6a8 commit 0512889

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

targets/TARGET_NUVOTON/TARGET_M480/pwmout_api.c

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ static const struct nu_modinit_s pwm_modinit_tab[] = {
6060
{NC, 0, 0, 0, 0, (IRQn_Type) 0, NULL}
6161
};
6262

63-
static void pwmout_config(pwmout_t* obj, int start);
63+
static void pwmout_config(pwmout_t *obj, int start);
6464

65-
void pwmout_init(pwmout_t* obj, PinName pin)
65+
void pwmout_init(pwmout_t *obj, PinName pin)
6666
{
6767
obj->pwm = (PWMName) pinmap_peripheral(pin, PinMap_PWM);
6868
MBED_ASSERT((int) obj->pwm != NC);
@@ -86,7 +86,7 @@ void pwmout_init(pwmout_t* obj, PinName pin)
8686
}
8787

8888
// NOTE: All channels (identified by PWMName) share a PWM module. This reset will also affect other channels of the same PWM module.
89-
if (! ((struct nu_pwm_var *) modinit->var)->en_msk) {
89+
if (!((struct nu_pwm_var *) modinit->var)->en_msk) {
9090
// Reset this module if no channel enabled
9191
SYS_ResetModule(modinit->rsetidx);
9292
}
@@ -105,7 +105,7 @@ void pwmout_init(pwmout_t* obj, PinName pin)
105105
pwm_modinit_mask |= 1 << i;
106106
}
107107

108-
void pwmout_free(pwmout_t* obj)
108+
void pwmout_free(pwmout_t *obj)
109109
{
110110
EPWM_T *pwm_base = (EPWM_T *) NU_MODBASE(obj->pwm);
111111
uint32_t chn = NU_MODSUBINDEX(obj->pwm);
@@ -130,29 +130,29 @@ void pwmout_free(pwmout_t* obj)
130130
obj->pin = NC;
131131
}
132132

133-
void pwmout_write(pwmout_t* obj, float value)
133+
void pwmout_write(pwmout_t *obj, float value)
134134
{
135-
obj->pulsewidth_us = NU_CLAMP((uint32_t) (value * obj->period_us), 0, obj->period_us);
135+
obj->pulsewidth_us = NU_CLAMP((uint32_t)(value * obj->period_us), 0, obj->period_us);
136136
pwmout_config(obj, 1);
137137
}
138138

139-
float pwmout_read(pwmout_t* obj)
139+
float pwmout_read(pwmout_t *obj)
140140
{
141141
return NU_CLAMP((((float) obj->pulsewidth_us) / obj->period_us), 0.0f, 1.0f);
142142
}
143143

144-
void pwmout_period(pwmout_t* obj, float seconds)
144+
void pwmout_period(pwmout_t *obj, float seconds)
145145
{
146146
pwmout_period_us(obj, seconds * 1000000.0f);
147147
}
148148

149-
void pwmout_period_ms(pwmout_t* obj, int ms)
149+
void pwmout_period_ms(pwmout_t *obj, int ms)
150150
{
151151
pwmout_period_us(obj, ms * 1000);
152152
}
153153

154154
// Set the PWM period, keeping the duty cycle the same.
155-
void pwmout_period_us(pwmout_t* obj, int us)
155+
void pwmout_period_us(pwmout_t *obj, int us)
156156
{
157157
uint32_t period_us_old = obj->period_us;
158158
uint32_t pulsewidth_us_old = obj->pulsewidth_us;
@@ -161,23 +161,32 @@ void pwmout_period_us(pwmout_t* obj, int us)
161161
pwmout_config(obj, 1);
162162
}
163163

164-
void pwmout_pulsewidth(pwmout_t* obj, float seconds)
164+
int pwmout_read_period_us(pwmout_t *obj)
165+
{
166+
return obj->period_us;
167+
}
168+
169+
void pwmout_pulsewidth(pwmout_t *obj, float seconds)
165170
{
166171
pwmout_pulsewidth_us(obj, seconds * 1000000.0f);
167172
}
168173

169-
void pwmout_pulsewidth_ms(pwmout_t* obj, int ms)
174+
void pwmout_pulsewidth_ms(pwmout_t *obj, int ms)
170175
{
171176
pwmout_pulsewidth_us(obj, ms * 1000);
172177
}
173178

174-
void pwmout_pulsewidth_us(pwmout_t* obj, int us)
179+
void pwmout_pulsewidth_us(pwmout_t *obj, int us)
175180
{
176181
obj->pulsewidth_us = NU_CLAMP(us, 0, obj->period_us);
177182
pwmout_config(obj, 1);
178183
}
179184

180-
static void pwmout_config(pwmout_t* obj, int start)
185+
int pwmout_read_pulsewidth_us(pwmout_t *obj {
186+
return obj->pulsewidth_us;
187+
}
188+
189+
static void pwmout_config(pwmout_t *obj, int start)
181190
{
182191
EPWM_T *pwm_base = (EPWM_T *) NU_MODBASE(obj->pwm);
183192
uint32_t chn = NU_MODSUBINDEX(obj->pwm);

0 commit comments

Comments
 (0)