@@ -54,14 +54,12 @@ void pwmout_init(pwmout_t* obj, PinName pin) {
54
54
ftm -> MODE |= FTM_MODE_WPDIS_MASK ; //write protection disabled
55
55
ftm -> CONF |= FTM_CONF_BDMMODE (3 );
56
56
ftm -> SC = FTM_SC_CLKS (1 ) | FTM_SC_PS (6 ); // (48)MHz / 64 = (0.75)MHz
57
- ftm -> PWMLOAD |= FTM_PWMLOAD_LDOK_MASK ;
58
57
ftm -> CONTROLS [ch_n ].CnSC = (FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK ); /* No Interrupts; High True pulses on Edge Aligned PWM */
59
- ftm -> SYNCONF |= FTM_SYNCONF_SYNCMODE_MASK | FTM_SYNCONF_SWWRBUF_MASK ; //enhanced
60
58
61
59
obj -> CnV = & ftm -> CONTROLS [ch_n ].CnV ;
62
60
obj -> MOD = & ftm -> MOD ;
63
61
obj -> CNT = & ftm -> CNT ;
64
- obj -> SYNC = & ftm -> SYNC ;
62
+ obj -> PWMLOAD = & ftm -> PWMLOAD ;
65
63
66
64
// default to 20ms: standard for servos, and fine for e.g. brightness control
67
65
pwmout_period_ms (obj , 20 );
@@ -81,8 +79,8 @@ void pwmout_write(pwmout_t* obj, float value) {
81
79
}
82
80
83
81
* obj -> CnV = (uint32_t )((float )(* obj -> MOD ) * value );
82
+ * obj -> PWMLOAD |= FTM_PWMLOAD_LDOK_MASK ;
84
83
* obj -> CNT = 0 ;
85
- * obj -> SYNC |= FTM_SYNC_SWSYNC_MASK ;
86
84
}
87
85
88
86
float pwmout_read (pwmout_t * obj ) {
@@ -115,5 +113,5 @@ void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
115
113
116
114
void pwmout_pulsewidth_us (pwmout_t * obj , int us ) {
117
115
* obj -> CnV = PWM_CLOCK_MHZ * us ;
118
- * obj -> SYNC |= FTM_SYNC_SWSYNC_MASK ;
116
+ * obj -> PWMLOAD |= FTM_PWMLOAD_LDOK_MASK ;
119
117
}
0 commit comments