@@ -114,36 +114,22 @@ typedef struct {
114
114
__IO uint16_t * pulse1 ;
115
115
__IO uint16_t * pulse2 ;
116
116
__IO uint16_t * period1 ;
117
+ __IO uint16_t * period2 ;
118
+ __IO uint8_t * tior ;
117
119
__IO uint8_t * tcr ;
118
120
__IO uint8_t * tmdr ;
119
121
int max_period ;
120
122
} st_mtu2_ctrl_t ;
121
123
122
124
static st_mtu2_ctrl_t mtu2_ctl [] = {
123
- { TIOC0A , & MTU2TGRA_0 , & MTU2TGRC_0 , & MTU2TGRB_0 , & MTU2TCR_0 , & MTU2TMDR_0 , 125000 }, // PWM_TIOC0A
124
- { TIOC0C , & MTU2TGRC_0 , & MTU2TGRA_0 , & MTU2TGRD_0 , & MTU2TCR_0 , & MTU2TMDR_0 , 125000 }, // PWM_TIOC0C
125
- { TIOC1A , & MTU2TGRA_1 , NULL , & MTU2TGRB_1 , & MTU2TCR_1 , & MTU2TMDR_1 , 503000 }, // PWM_TIOC1A
126
- { TIOC2A , & MTU2TGRA_2 , NULL , & MTU2TGRB_2 , & MTU2TCR_2 , & MTU2TMDR_2 , 2000000 }, // PWM_TIOC2A
127
- { TIOC3A , & MTU2TGRA_3 , & MTU2TGRC_3 , & MTU2TGRB_3 , & MTU2TCR_3 , & MTU2TMDR_3 , 2000000 }, // PWM_TIOC3A
128
- { TIOC3C , & MTU2TGRC_3 , & MTU2TGRA_3 , & MTU2TGRD_3 , & MTU2TCR_3 , & MTU2TMDR_3 , 2000000 }, // PWM_TIOC3C
129
- { TIOC4A , & MTU2TGRA_4 , & MTU2TGRC_4 , & MTU2TGRB_4 , & MTU2TCR_4 , & MTU2TMDR_4 , 2000000 }, // PWM_TIOC4A
130
- { TIOC4C , & MTU2TGRC_4 , & MTU2TGRA_4 , & MTU2TGRD_4 , & MTU2TCR_4 , & MTU2TMDR_4 , 2000000 }, // PWM_TIOC4C
131
- };
132
-
133
- static __IO uint8_t * TIORH_MATCH [] = {
134
- & MTU2TIORH_0 ,
135
- & MTU2TIOR_1 ,
136
- & MTU2TIOR_2 ,
137
- & MTU2TIORH_3 ,
138
- & MTU2TIORH_4 ,
139
- };
140
-
141
- static __IO uint8_t * TIORL_MATCH [] = {
142
- & MTU2TIORL_0 ,
143
- NULL ,
144
- NULL ,
145
- & MTU2TIORL_3 ,
146
- & MTU2TIORL_4 ,
125
+ { TIOC0A , & MTU2TGRA_0 , & MTU2TGRC_0 , & MTU2TGRB_0 , & MTU2TGRD_0 , & MTU2TIORH_0 , & MTU2TCR_0 , & MTU2TMDR_0 , 125000 }, // PWM_TIOC0A
126
+ { TIOC0C , & MTU2TGRC_0 , & MTU2TGRA_0 , & MTU2TGRB_0 , & MTU2TGRD_0 , & MTU2TIORL_0 , & MTU2TCR_0 , & MTU2TMDR_0 , 125000 }, // PWM_TIOC0C
127
+ { TIOC1A , & MTU2TGRA_1 , NULL , & MTU2TGRB_1 , NULL , & MTU2TIOR_1 , & MTU2TCR_1 , & MTU2TMDR_1 , 503000 }, // PWM_TIOC1A
128
+ { TIOC2A , & MTU2TGRA_2 , NULL , & MTU2TGRB_2 , NULL , & MTU2TIOR_2 , & MTU2TCR_2 , & MTU2TMDR_2 , 2000000 }, // PWM_TIOC2A
129
+ { TIOC3A , & MTU2TGRA_3 , & MTU2TGRC_3 , & MTU2TGRB_3 , & MTU2TGRD_3 , & MTU2TIORH_3 , & MTU2TCR_3 , & MTU2TMDR_3 , 2000000 }, // PWM_TIOC3A
130
+ { TIOC3C , & MTU2TGRC_3 , & MTU2TGRA_3 , & MTU2TGRB_3 , & MTU2TGRD_3 , & MTU2TIORL_3 , & MTU2TCR_3 , & MTU2TMDR_3 , 2000000 }, // PWM_TIOC3C
131
+ { TIOC4A , & MTU2TGRA_4 , & MTU2TGRC_4 , & MTU2TGRB_4 , & MTU2TGRD_4 , & MTU2TIORH_4 , & MTU2TCR_4 , & MTU2TMDR_4 , 2000000 }, // PWM_TIOC4A
132
+ { TIOC4C , & MTU2TGRC_4 , & MTU2TGRA_4 , & MTU2TGRB_4 , & MTU2TGRD_4 , & MTU2TIORL_4 , & MTU2TCR_4 , & MTU2TMDR_4 , 2000000 }, // PWM_TIOC4C
147
133
};
148
134
149
135
static uint16_t init_mtu2_period_ch [5 ] = {0 };
@@ -381,11 +367,7 @@ void pwmout_period_us(pwmout_t* obj, int us) {
381
367
}
382
368
wk_cycle = (uint32_t )(wk_cycle_mtu2 / 1000000 );
383
369
384
- if (((uint8_t )p_mtu2_ctl -> port & 0x0F ) == 0x02 ) {
385
- tmp_tcr_up = 0xC0 ;
386
- } else {
387
- tmp_tcr_up = 0x40 ;
388
- }
370
+ tmp_tcr_up = 0x40 ;
389
371
if ((obj -> ch == 4 ) || (obj -> ch == 3 )) {
390
372
tmp_tstr_st = (1 << (obj -> ch + 3 ));
391
373
} else {
@@ -396,12 +378,12 @@ void pwmout_period_us(pwmout_t* obj, int us) {
396
378
MTU2TSTR &= ~tmp_tstr_st ;
397
379
wk_last_cycle = * p_mtu2_ctl -> period1 ;
398
380
* p_mtu2_ctl -> tcr = tmp_tcr_up | wk_cks ;
399
- * TIORH_MATCH [obj -> ch ] = 0x21 ;
400
- if ((obj -> ch == 0 ) || (obj -> ch == 3 ) || (obj -> ch == 4 )) {
401
- * TIORL_MATCH [obj -> ch ] = 0x21 ;
402
- }
381
+ * p_mtu2_ctl -> tior = 0x65 ;
403
382
// Set period
404
383
* p_mtu2_ctl -> period1 = (uint16_t )wk_cycle ;
384
+ if (p_mtu2_ctl -> period2 != NULL ) {
385
+ * p_mtu2_ctl -> period2 = (uint16_t )wk_cycle ;
386
+ }
405
387
// Set duty again
406
388
set_mtu2_duty_again (p_mtu2_ctl -> pulse1 , wk_last_cycle , wk_cycle );
407
389
if (p_mtu2_ctl -> pulse2 != NULL ) {
0 commit comments