@@ -80,7 +80,7 @@ void pwmout_free(pwmout_t *obj)
80
80
{
81
81
// Stops and clear count operation
82
82
TMRB_SetRunState (obj -> channel , TMRB_STOP );
83
- pwmout_write (obj ,0 );
83
+ pwmout_write (obj , 0 );
84
84
obj -> channel = NULL ;
85
85
obj -> trailing_timing = 0 ;
86
86
obj -> leading_timing = 0 ;
@@ -169,7 +169,7 @@ void pwmout_period_us(pwmout_t *obj, int us)
169
169
// Restore the duty-cycle
170
170
duty_cycle = (float )((obj -> trailing_timing - obj -> leading_timing ) / obj -> trailing_timing );
171
171
obj -> trailing_timing = cycles ;
172
- obj -> leading_timing = ((cycles )- (uint16_t )(cycles * duty_cycle ));
172
+ obj -> leading_timing = ((cycles ) - (uint16_t )(cycles * duty_cycle ));
173
173
174
174
// Change the source clock division and period
175
175
m_tmrb .Mode = TMRB_INTERVAL_TIMER ;
@@ -192,6 +192,11 @@ void pwmout_period_us(pwmout_t *obj, int us)
192
192
TMRB_SetRunState (obj -> channel , TMRB_RUN );
193
193
}
194
194
195
+ int pwmout_read_period_us (pwmout_t * obj )
196
+ {
197
+ return obj -> trailing_timing ;
198
+ }
199
+
195
200
void pwmout_pulsewidth (pwmout_t * obj , float seconds )
196
201
{
197
202
pwmout_pulsewidth_us (obj , (seconds * 1000000.0f ));
@@ -212,6 +217,11 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
212
217
pwmout_write (obj , value );
213
218
}
214
219
220
+ int pwmout_read_pulsewidth_us (pwmout_t * obj )
221
+ {
222
+ return obj -> trailing_timing - obj -> leading_timing ;
223
+ }
224
+
215
225
const PinMap * pwmout_pinmap ()
216
226
{
217
227
return PinMap_PWM ;
0 commit comments