@@ -60,9 +60,9 @@ static const struct nu_modinit_s pwm_modinit_tab[] = {
60
60
{NC , 0 , 0 , 0 , 0 , (IRQn_Type ) 0 , NULL }
61
61
};
62
62
63
- static void pwmout_config (pwmout_t * obj , int start );
63
+ static void pwmout_config (pwmout_t * obj , int start );
64
64
65
- void pwmout_init (pwmout_t * obj , PinName pin )
65
+ void pwmout_init (pwmout_t * obj , PinName pin )
66
66
{
67
67
obj -> pwm = (PWMName ) pinmap_peripheral (pin , PinMap_PWM );
68
68
MBED_ASSERT ((int ) obj -> pwm != NC );
@@ -86,7 +86,7 @@ void pwmout_init(pwmout_t* obj, PinName pin)
86
86
}
87
87
88
88
// 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 ) {
90
90
// Reset this module if no channel enabled
91
91
SYS_ResetModule (modinit -> rsetidx );
92
92
}
@@ -105,7 +105,7 @@ void pwmout_init(pwmout_t* obj, PinName pin)
105
105
pwm_modinit_mask |= 1 << i ;
106
106
}
107
107
108
- void pwmout_free (pwmout_t * obj )
108
+ void pwmout_free (pwmout_t * obj )
109
109
{
110
110
EPWM_T * pwm_base = (EPWM_T * ) NU_MODBASE (obj -> pwm );
111
111
uint32_t chn = NU_MODSUBINDEX (obj -> pwm );
@@ -130,29 +130,29 @@ void pwmout_free(pwmout_t* obj)
130
130
obj -> pin = NC ;
131
131
}
132
132
133
- void pwmout_write (pwmout_t * obj , float value )
133
+ void pwmout_write (pwmout_t * obj , float value )
134
134
{
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 );
136
136
pwmout_config (obj , 1 );
137
137
}
138
138
139
- float pwmout_read (pwmout_t * obj )
139
+ float pwmout_read (pwmout_t * obj )
140
140
{
141
141
return NU_CLAMP ((((float ) obj -> pulsewidth_us ) / obj -> period_us ), 0.0f , 1.0f );
142
142
}
143
143
144
- void pwmout_period (pwmout_t * obj , float seconds )
144
+ void pwmout_period (pwmout_t * obj , float seconds )
145
145
{
146
146
pwmout_period_us (obj , seconds * 1000000.0f );
147
147
}
148
148
149
- void pwmout_period_ms (pwmout_t * obj , int ms )
149
+ void pwmout_period_ms (pwmout_t * obj , int ms )
150
150
{
151
151
pwmout_period_us (obj , ms * 1000 );
152
152
}
153
153
154
154
// 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 )
156
156
{
157
157
uint32_t period_us_old = obj -> period_us ;
158
158
uint32_t pulsewidth_us_old = obj -> pulsewidth_us ;
@@ -161,23 +161,32 @@ void pwmout_period_us(pwmout_t* obj, int us)
161
161
pwmout_config (obj , 1 );
162
162
}
163
163
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 )
165
170
{
166
171
pwmout_pulsewidth_us (obj , seconds * 1000000.0f );
167
172
}
168
173
169
- void pwmout_pulsewidth_ms (pwmout_t * obj , int ms )
174
+ void pwmout_pulsewidth_ms (pwmout_t * obj , int ms )
170
175
{
171
176
pwmout_pulsewidth_us (obj , ms * 1000 );
172
177
}
173
178
174
- void pwmout_pulsewidth_us (pwmout_t * obj , int us )
179
+ void pwmout_pulsewidth_us (pwmout_t * obj , int us )
175
180
{
176
181
obj -> pulsewidth_us = NU_CLAMP (us , 0 , obj -> period_us );
177
182
pwmout_config (obj , 1 );
178
183
}
179
184
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 )
181
190
{
182
191
EPWM_T * pwm_base = (EPWM_T * ) NU_MODBASE (obj -> pwm );
183
192
uint32_t chn = NU_MODSUBINDEX (obj -> pwm );
0 commit comments