aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/platforms/SPC560Pxx/spc560p_registry.h9
-rw-r--r--os/hal/platforms/SPC5xx/FlexPWM_v1/pwm_lld.c316
2 files changed, 161 insertions, 164 deletions
diff --git a/os/hal/platforms/SPC560Pxx/spc560p_registry.h b/os/hal/platforms/SPC560Pxx/spc560p_registry.h
index 6a39541a6..2ebc3c9c2 100644
--- a/os/hal/platforms/SPC560Pxx/spc560p_registry.h
+++ b/os/hal/platforms/SPC560Pxx/spc560p_registry.h
@@ -64,7 +64,6 @@
/* FlexPWM attributes.*/
#define SPC5_HAS_FLEXPWM0 TRUE
-#define SPC5_FLEXPWM0_CLK_SOURCE SPC5_MCONTROL_CLK
#define SPC5_FLEXPWM0_PCTL 41
#define SPC5_FLEXPWM0_RF0_HANDLER vector179
#define SPC5_FLEXPWM0_COF0_HANDLER vector180
@@ -94,13 +93,12 @@
#define SPC5_FLEXPWM0_CAF3_NUMBER 190
#define SPC5_FLEXPWM0_FFLAG_NUMBER 191
#define SPC5_FLEXPWM0_REF_NUMBER 192
-#define SPC5_FLEXPWM0_CLK SPC5_FLEXPWM0_CLK_SOURCE
+#define SPC5_FLEXPWM0_CLK SPC5_MCONTROL_CLK
#define SPC5_HAS_FLEXPWM1 FALSE
/* eTimer attributes.*/
#define SPC5_HAS_ETIMER0 TRUE
-#define SPC5_ETIMER0_CLK_SOURCE SPC5_MCONTROL_CLK
#define SPC5_ETIMER0_PCTL 38
#define SPC5_ETIMER0_TC0IR_HANDLER vector157
#define SPC5_ETIMER0_TC1IR_HANDLER vector158
@@ -118,10 +116,9 @@
#define SPC5_ETIMER0_TC5IR_NUMBER 162
#define SPC5_ETIMER0_WTIF_NUMBER 165
#define SPC5_ETIMER0_RCF_NUMBER 167
-#define SPC5_ETIMER0_CLK SPC5_ETIMER0_CLK_SOURCE
+#define SPC5_ETIMER0_CLK SPC5_MCONTROL_CLK
#define SPC5_HAS_ETIMER1 TRUE
-#define SPC5_ETIMER1_CLK_SOURCE SPC5_MCONTROL_CLK
#define SPC5_ETIMER1_PCTL 39
#define SPC5_ETIMER1_TC0IR_HANDLER vector168
#define SPC5_ETIMER1_TC1IR_HANDLER vector169
@@ -137,7 +134,7 @@
#define SPC5_ETIMER1_TC4IR_NUMBER 172
#define SPC5_ETIMER1_TC5IR_NUMBER 173
#define SPC5_ETIMER1_RCF_NUMBER 178
-#define SPC5_ETIMER1_CLK SPC5_ETIMER1_CLK_SOURCE
+#define SPC5_ETIMER1_CLK SPC5_MCONTROL_CLK
#endif /* _SPC560P_REGISTRY_H_ */
diff --git a/os/hal/platforms/SPC5xx/FlexPWM_v1/pwm_lld.c b/os/hal/platforms/SPC5xx/FlexPWM_v1/pwm_lld.c
index 6d7416a32..908d634b0 100644
--- a/os/hal/platforms/SPC5xx/FlexPWM_v1/pwm_lld.c
+++ b/os/hal/platforms/SPC5xx/FlexPWM_v1/pwm_lld.c
@@ -86,41 +86,41 @@ void pwm_lld_start_submodule(PWMDriver *pwmp, uint8_t sid) {
pwmp->flexpwmp->SUB[sid].STS.R = 0xFFFF;
/* Clears LDOK and initializes the registers.*/
- pwmp->flexpwmp->MCTRL.B.CLDOK |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MCTRL.B.CLDOK |= (0b0000 | (1U << sid));
pwmp->flexpwmp->SUB[sid].OCTRL.R = 0x0000;
pwmp->flexpwmp->SUB[sid].INTEN.R = 0x0000;
/* Setting PWM clock frequency and submodule prescaler.*/
- psc = ( SPC5_FLEXPWM0_CLK / pwmp->config->frequency );
- chDbgAssert((psc <= 0xFFFF) && \
- (((psc) * pwmp->config->frequency) == SPC5_FLEXPWM0_CLK) && \
- ((psc == 1) || (psc == 2) || (psc == 4) || (psc == 8) || \
- (psc == 16) || (psc == 32) || \
- (psc == 64) || (psc == 128)),
- "icu_lld_start(), #1", "invalid frequency");
- switch(psc){
- case 1:
+ psc = (SPC5_FLEXPWM0_CLK / pwmp->config->frequency);
+ chDbgAssert((psc <= 0xFFFF) &&
+ (((psc) * pwmp->config->frequency) == SPC5_FLEXPWM0_CLK) &&
+ ((psc == 1) || (psc == 2) || (psc == 4) || (psc == 8) ||
+ (psc == 16) || (psc == 32) ||
+ (psc == 64) || (psc == 128)),
+ "icu_lld_start(), #1", "invalid frequency");
+ switch(psc) {
+ case 1:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b000;
break;
- case 2:
+ case 2:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b001;
break;
- case 4:
+ case 4:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b010;
break;
- case 8:
+ case 8:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b011;
break;
- case 16:
+ case 16:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b100;
break;
- case 32:
+ case 32:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b101;
break;
- case 64:
+ case 64:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b110;
break;
- case 128:
+ case 128:
pwmp->flexpwmp->SUB[sid].CTRL.B.PRSC = 0b111;
break;
}
@@ -138,126 +138,126 @@ void pwm_lld_start_submodule(PWMDriver *pwmp, uint8_t sid) {
/* Sets the submodule channels.*/
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
+ case EDGE_ALIGNED_PWM:
/* Setting reloads.*/
pwmp->flexpwmp->SUB[sid].CTRL.B.HALF = 0;
pwmp->flexpwmp->SUB[sid].CTRL.B.FULL = 1;
/* Setting active front of PWM channels.*/
- pwmp->flexpwmp->SUB[sid].VAL[2].R = ~(pwmperiod / 2) + 1U;
- pwmp->flexpwmp->SUB[sid].VAL[4].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[sid].VAL[2].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[sid].VAL[4].R = ~(pwmperiod / 2) + 1U;
break;
- case CENTER_ALIGNED_PWM:
+ case CENTER_ALIGNED_PWM:
/* Setting reloads.*/
pwmp->flexpwmp->SUB[sid].CTRL.B.HALF = 1;
pwmp->flexpwmp->SUB[sid].CTRL.B.FULL = 0;
break;
- default:
+ default:
;
}
/* Polarities setup.*/
switch (pwmp->config->channels[0].mode & PWM_OUTPUT_MASK) {
- case PWM_OUTPUT_ACTIVE_LOW:
+ case PWM_OUTPUT_ACTIVE_LOW:
pwmp->flexpwmp->SUB[sid].OCTRL.B.POLA = 1;
/* Enables CHA mask.*/
- pwmp->flexpwmp->MASK.B.MASKA |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKA |= (0b0000 | (1U << sid));
/* Enables CHA.*/
- pwmp->flexpwmp->OUTEN.B.PWMA_EN |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->OUTEN.B.PWMA_EN |= (0b0000 | (1U << sid));
break;
- case PWM_OUTPUT_ACTIVE_HIGH:
+ case PWM_OUTPUT_ACTIVE_HIGH:
pwmp->flexpwmp->SUB[sid].OCTRL.B.POLA = 0;
/* Enables CHA mask.*/
- pwmp->flexpwmp->MASK.B.MASKA |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKA |= (0b0000 | (1U << sid));
/* Enables CHA.*/
- pwmp->flexpwmp->OUTEN.B.PWMA_EN |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->OUTEN.B.PWMA_EN |= (0b0000 | (1U << sid));
break;
- case PWM_OUTPUT_DISABLED:
+ case PWM_OUTPUT_DISABLED:
/* Enables CHA mask.*/
- pwmp->flexpwmp->MASK.B.MASKA |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKA |= (0b0000 | (1U << sid));
break;
- default:
+ default:
;
}
switch (pwmp->config->channels[1].mode & PWM_OUTPUT_MASK) {
- case PWM_OUTPUT_ACTIVE_LOW:
+ case PWM_OUTPUT_ACTIVE_LOW:
pwmp->flexpwmp->SUB[sid].OCTRL.B.POLB = 1;
/* Enables CHB mask.*/
- pwmp->flexpwmp->MASK.B.MASKB |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKB |= (0b0000 | (1U << sid));
/* Enables CHB.*/
- pwmp->flexpwmp->OUTEN.B.PWMB_EN |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->OUTEN.B.PWMB_EN |= (0b0000 | (1U << sid));
break;
- case PWM_OUTPUT_ACTIVE_HIGH:
+ case PWM_OUTPUT_ACTIVE_HIGH:
pwmp->flexpwmp->SUB[sid].OCTRL.B.POLB = 0;
/* Enables CHB mask.*/
- pwmp->flexpwmp->MASK.B.MASKB |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKB |= (0b0000 | (1U << sid));
/* Enables CHB.*/
- pwmp->flexpwmp->OUTEN.B.PWMB_EN |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->OUTEN.B.PWMB_EN |= (0b0000 | (1U << sid));
break;
- case PWM_OUTPUT_DISABLED:
+ case PWM_OUTPUT_DISABLED:
/* Enables CHB mask.*/
- pwmp->flexpwmp->MASK.B.MASKB |= ( 0b0000 | (1U << sid) );
- break;
- default:
- ;
- }
-
- /* Complementary output setup.*/
-/* switch (pwmp->config->channels[0].mode & PWM_COMPLEMENTARY_OUTPUT_MASK) {
- case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW:
- chDbgAssert(pwmp->config->channels[1].mode == PWM_OUTPUT_ACTIVE_LOW,
- "pwm_lld_start(), #1",
- "the PWM chB must be set in PWM_OUTPUT_ACTIVE_LOW");
- //pwmp->flexpwmp->SUB[sid].OCTRL.B.POLA = 1;
- pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
- pwmp->flexpwmp->MCTRL.B.IPOL |= ( 0b0000 | (1U << sid) );
- pwmp->flexpwmp->MASK.B.MASKA |= ( 0b0000 | (1U << sid) );
- pwmp->flexpwmp->OUTEN.B.PWMA_EN |= ( 0b0000 | (1U << sid) );
- //pwmp->flexpwmp->SUB[0].OCTRL.B.POLB = 0;
+ pwmp->flexpwmp->MASK.B.MASKB |= (0b0000 | (1U << sid));
break;
- case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH:
- chDbgAssert(pwmp->config->channels[1].mode == PWM_OUTPUT_ACTIVE_HIGH,
- "pwm_lld_start(), #2",
- "the PWM chB must be set in PWM_OUTPUT_ACTIVE_HIGH");
- pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
- pwmp->flexpwmp->MCTRL.B.IPOL |= ( 0b0000 | (0U << sid) );
- pwmp->flexpwmp->MASK.B.MASKA |= ( 0b0000 | (1U << sid) );
- pwmp->flexpwmp->OUTEN.B.PWMA_EN |= ( 0b0000 | (1U << sid) );
- // pwmp->flexpwmp->SUB[0].OCTRL.B.POLA = 0;
- //pwmp->flexpwmp->SUB[0].OCTRL.B.POLB = 1;
- break;
- default:
+ default:
;
}
- switch (pwmp->config->channels[1].mode & PWM_COMPLEMENTARY_OUTPUT_MASK) {
- case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW:
- chDbgAssert(pwmp->config->channels[0].mode == PWM_OUTPUT_ACTIVE_LOW,
- "pwm_lld_start(), #3",
- "the PWM chA must be set in PWM_OUTPUT_ACTIVE_LOW");
- pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
- pwmp->flexpwmp->MCTRL.B.IPOL &= ~ ( 0b0000 | (1U << sid) );
- // pwmp->flexpwmp->SUB[0].OCTRL.B.POLA = 0;
- pwmp->flexpwmp->SUB[sid].OCTRL.B.POLB = 1;
- pwmp->flexpwmp->MASK.B.MASKB |= ( 0b0000 | (1U << sid) );
- pwmp->flexpwmp->OUTEN.B.PWMB_EN |= ( 0b0000 | (1U << sid) );
- break;
- case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH:
- chDbgAssert(pwmp->config->channels[0].mode == PWM_OUTPUT_ACTIVE_HIGH,
- "pwm_lld_start(), #4",
- "the PWM chA must be set in PWM_OUTPUT_ACTIVE_HIGH");
- pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
- pwmp->flexpwmp->MCTRL.B.IPOL &= ~ ( 0b0000 | (1U << sid) );
-
- pwmp->flexpwmp->MASK.B.MASKB |= ( 0b0000 | (1U << sid) );
- pwmp->flexpwmp->OUTEN.B.PWMB_EN |= ( 0b0000 | (1U << sid) );
- // pwmp->flexpwmp->SUB[0].OCTRL.B.POLA = 1;
- // pwmp->flexpwmp->SUB[0].OCTRL.B.POLB = 0;
- break;
- default:
- ;
- }
-*/
+ /* Complementary output setup.*/
+ /* switch (pwmp->config->channels[0].mode & PWM_COMPLEMENTARY_OUTPUT_MASK) {
+ case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW:
+ chDbgAssert(pwmp->config->channels[1].mode == PWM_OUTPUT_ACTIVE_LOW,
+ "pwm_lld_start(), #1",
+ "the PWM chB must be set in PWM_OUTPUT_ACTIVE_LOW");
+ //pwmp->flexpwmp->SUB[sid].OCTRL.B.POLA = 1;
+ pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
+ pwmp->flexpwmp->MCTRL.B.IPOL |= (0b0000 | (1U << sid));
+ pwmp->flexpwmp->MASK.B.MASKA |= (0b0000 | (1U << sid));
+ pwmp->flexpwmp->OUTEN.B.PWMA_EN |= (0b0000 | (1U << sid));
+ //pwmp->flexpwmp->SUB[0].OCTRL.B.POLB = 0;
+ break;
+ case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH:
+ chDbgAssert(pwmp->config->channels[1].mode == PWM_OUTPUT_ACTIVE_HIGH,
+ "pwm_lld_start(), #2",
+ "the PWM chB must be set in PWM_OUTPUT_ACTIVE_HIGH");
+ pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
+ pwmp->flexpwmp->MCTRL.B.IPOL |= (0b0000 | (0U << sid));
+ pwmp->flexpwmp->MASK.B.MASKA |= (0b0000 | (1U << sid));
+ pwmp->flexpwmp->OUTEN.B.PWMA_EN |= (0b0000 | (1U << sid));
+ // pwmp->flexpwmp->SUB[0].OCTRL.B.POLA = 0;
+ //pwmp->flexpwmp->SUB[0].OCTRL.B.POLB = 1;
+ break;
+ default:
+ ;
+ }
+
+ switch (pwmp->config->channels[1].mode & PWM_COMPLEMENTARY_OUTPUT_MASK) {
+ case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW:
+ chDbgAssert(pwmp->config->channels[0].mode == PWM_OUTPUT_ACTIVE_LOW,
+ "pwm_lld_start(), #3",
+ "the PWM chA must be set in PWM_OUTPUT_ACTIVE_LOW");
+ pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
+ pwmp->flexpwmp->MCTRL.B.IPOL &= ~ (0b0000 | (1U << sid));
+ // pwmp->flexpwmp->SUB[0].OCTRL.B.POLA = 0;
+ pwmp->flexpwmp->SUB[sid].OCTRL.B.POLB = 1;
+ pwmp->flexpwmp->MASK.B.MASKB |= (0b0000 | (1U << sid));
+ pwmp->flexpwmp->OUTEN.B.PWMB_EN |= (0b0000 | (1U << sid));
+ break;
+ case PWM_COMPLEMENTARY_OUTPUT_ACTIVE_HIGH:
+ chDbgAssert(pwmp->config->channels[0].mode == PWM_OUTPUT_ACTIVE_HIGH,
+ "pwm_lld_start(), #4",
+ "the PWM chA must be set in PWM_OUTPUT_ACTIVE_HIGH");
+ pwmp->flexpwmp->SUB[sid].CTRL2.B.INDEP = 0;
+ pwmp->flexpwmp->MCTRL.B.IPOL &= ~ (0b0000 | (1U << sid));
+
+ pwmp->flexpwmp->MASK.B.MASKB |= (0b0000 | (1U << sid));
+ pwmp->flexpwmp->OUTEN.B.PWMB_EN |= (0b0000 | (1U << sid));
+ // pwmp->flexpwmp->SUB[0].OCTRL.B.POLA = 1;
+ // pwmp->flexpwmp->SUB[0].OCTRL.B.POLB = 0;
+ break;
+ default:
+ ;
+ }
+ */
/* Sets the INIT and MASK registers.*/
pwmp->flexpwmp->SUB[sid].CTRL2.B.FRCEN = 1U;
@@ -265,8 +265,8 @@ void pwm_lld_start_submodule(PWMDriver *pwmp, uint8_t sid) {
pwmp->flexpwmp->SUB[sid].CTRL2.B.FORCE = 1U;
/* Updates SMOD registers and starts SMOD.*/
- pwmp->flexpwmp->MCTRL.B.LDOK |= ( 0b0000 | (1U << sid) );
- pwmp->flexpwmp->MCTRL.B.RUN |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MCTRL.B.LDOK |= (0b0000 | (1U << sid));
+ pwmp->flexpwmp->MCTRL.B.RUN |= (0b0000 | (1U << sid));
}
/**
@@ -280,8 +280,8 @@ void pwm_lld_start_submodule(PWMDriver *pwmp, uint8_t sid) {
* @notapi
*/
void pwm_lld_enable_submodule_channel(PWMDriver *pwmp,
- pwmchannel_t channel,
- pwmcnt_t width, uint8_t sid) {
+ pwmchannel_t channel,
+ pwmcnt_t width, uint8_t sid) {
pwmcnt_t pwmperiod;
int16_t nwidth;
@@ -289,7 +289,7 @@ void pwm_lld_enable_submodule_channel(PWMDriver *pwmp,
nwidth = width - (pwmperiod / 2);
/* Clears LDOK.*/
- pwmp->flexpwmp->MCTRL.B.CLDOK |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MCTRL.B.CLDOK |= (0b0000 | (1U << sid));
/* Active the width interrupt.*/
if (channel == 0) {
@@ -301,23 +301,23 @@ void pwm_lld_enable_submodule_channel(PWMDriver *pwmp,
/* Sets the channel width.*/
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
- if( nwidth >= 0 )
- pwmp->flexpwmp->SUB[sid].VAL[3].R = nwidth;
+ case EDGE_ALIGNED_PWM:
+ if(nwidth >= 0)
+ pwmp->flexpwmp->SUB[sid].VAL[3].R = nwidth;
else
- pwmp->flexpwmp->SUB[sid].VAL[3].R = ~( (pwmperiod / 2) - width ) + 1U;
+ pwmp->flexpwmp->SUB[sid].VAL[3].R = ~((pwmperiod / 2) - width) + 1U;
break;
- case CENTER_ALIGNED_PWM:
+ case CENTER_ALIGNED_PWM:
pwmp->flexpwmp->SUB[sid].VAL[3].R = width / 2;
- pwmp->flexpwmp->SUB[sid].VAL[2].R = ~( width / 2 ) + 1U;
+ pwmp->flexpwmp->SUB[sid].VAL[2].R = ~(width / 2) + 1U;
break;
- default:
+ default:
;
}
/* Removes the channel mask if it is necessary.*/
- if ( (pwmp->flexpwmp->MASK.B.MASKA & ( 0b0000 | (1U << sid))) == 1 )
- pwmp->flexpwmp->MASK.B.MASKA &= ~ ( 0b0000 | (1U << sid) );
+ if ((pwmp->flexpwmp->MASK.B.MASKA & (0b0000 | (1U << sid))) == 1)
+ pwmp->flexpwmp->MASK.B.MASKA &= ~ (0b0000 | (1U << sid));
}
/* Active the width interrupt.*/
else if (channel == 1) {
@@ -328,27 +328,27 @@ void pwm_lld_enable_submodule_channel(PWMDriver *pwmp,
}
/* Sets the channel width.*/
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
- if( nwidth >= 0 )
- pwmp->flexpwmp->SUB[sid].VAL[5].R = nwidth;
+ case EDGE_ALIGNED_PWM:
+ if(nwidth >= 0)
+ pwmp->flexpwmp->SUB[sid].VAL[5].R = nwidth;
else
- pwmp->flexpwmp->SUB[sid].VAL[5].R = ~( (pwmperiod / 2) - width ) + 1U;
+ pwmp->flexpwmp->SUB[sid].VAL[5].R = ~((pwmperiod / 2) - width) + 1U;
break;
- case CENTER_ALIGNED_PWM:
+ case CENTER_ALIGNED_PWM:
pwmp->flexpwmp->SUB[sid].VAL[5].R = width / 2;
- pwmp->flexpwmp->SUB[sid].VAL[4].R = ~( width / 2 ) + 1U;
+ pwmp->flexpwmp->SUB[sid].VAL[4].R = ~(width / 2) + 1U;
break;
- default:
+ default:
;
}
/* Removes the channel mask if it is necessary.*/
- if ( (pwmp->flexpwmp->MASK.B.MASKB & ( 0b0000 | (1U << sid))) == 1 )
- pwmp->flexpwmp->MASK.B.MASKB &= ~ ( 0b0000 | (1U << sid) );
+ if ((pwmp->flexpwmp->MASK.B.MASKB & (0b0000 | (1U << sid))) == 1)
+ pwmp->flexpwmp->MASK.B.MASKB &= ~ (0b0000 | (1U << sid));
}
/* Active the periodic interrupt.*/
- if ( pwmp->flexpwmp->SUB[sid].INTEN.B.RIE != 1U ) {
+ if (pwmp->flexpwmp->SUB[sid].INTEN.B.RIE != 1U) {
if (pwmp->config->callback != NULL) {
pwmp->flexpwmp->SUB[sid].INTEN.B.RIE = 1;
}
@@ -360,7 +360,7 @@ void pwm_lld_enable_submodule_channel(PWMDriver *pwmp,
pwmp->flexpwmp->SUB[sid].CTRL2.B.FORCE = 1U;
/* Forces reload of the VALUE registers.*/
- pwmp->flexpwmp->MCTRL.B.LDOK |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MCTRL.B.LDOK |= (0b0000 | (1U << sid));
}
/**
@@ -373,10 +373,10 @@ void pwm_lld_enable_submodule_channel(PWMDriver *pwmp,
* @notapi
*/
void pwm_lld_disable_submodule_channel(PWMDriver *pwmp,
- pwmchannel_t channel,
- uint8_t sid) {
+ pwmchannel_t channel,
+ uint8_t sid) {
- pwmp->flexpwmp->MCTRL.B.CLDOK |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MCTRL.B.CLDOK |= (0b0000 | (1U << sid));
/* Disable the width interrupt.*/
if (channel == 0) {
@@ -387,7 +387,7 @@ void pwm_lld_disable_submodule_channel(PWMDriver *pwmp,
}
/* Active the channel mask.*/
- pwmp->flexpwmp->MASK.B.MASKA |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKA |= (0b0000 | (1U << sid));
}
/* Disable the width interrupt.*/
else if (channel == 1) {
@@ -398,7 +398,7 @@ void pwm_lld_disable_submodule_channel(PWMDriver *pwmp,
}
/* Active the channel mask.*/
- pwmp->flexpwmp->MASK.B.MASKB |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MASK.B.MASKB |= (0b0000 | (1U << sid));
}
/* Sets the MASK registers.*/
@@ -407,14 +407,14 @@ void pwm_lld_disable_submodule_channel(PWMDriver *pwmp,
pwmp->flexpwmp->SUB[sid].CTRL2.B.FORCE = 1U;
/* Disable RIE interrupt to prevent reload interrupt.*/
- if( (pwmp->flexpwmp->MASK.B.MASKA & ( 0b0000 | (1U << sid))) &&
- (pwmp->flexpwmp->MASK.B.MASKB & ( 0b0000 | (1U << sid))) == 1 ) {
+ if((pwmp->flexpwmp->MASK.B.MASKA & (0b0000 | (1U << sid))) &&
+ (pwmp->flexpwmp->MASK.B.MASKB & (0b0000 | (1U << sid))) == 1) {
pwmp->flexpwmp->SUB[sid].INTEN.B.RIE = 0;
/* Clear the reload flag.*/
pwmp->flexpwmp->SUB[sid].STS.B.RF = 1U;
- }
+ }
- pwmp->flexpwmp->MCTRL.B.LDOK |= ( 0b0000 | (1U << sid) );
+ pwmp->flexpwmp->MCTRL.B.LDOK |= (0b0000 | (1U << sid));
}
#if SPC5_PWM_USE_SMOD0 || SPC5_PWM_USE_SMOD1 || SPC5_PWM_USE_SMOD2 || \
@@ -724,19 +724,19 @@ void pwm_lld_start(PWMDriver *pwmp) {
#if SPC5_PWM_USE_SMOD0
if (PWMD1.state == PWM_READY)
- SMOD0 = 1U;
+ SMOD0 = 1U;
#endif
#if SPC5_PWM_USE_SMOD1
if (PWMD2.state == PWM_READY)
- SMOD1 = 1U;
+ SMOD1 = 1U;
#endif
#if SPC5_PWM_USE_SMOD2
if (PWMD3.state == PWM_READY)
- SMOD2 = 1U;
+ SMOD2 = 1U;
#endif
#if SPC5_PWM_USE_SMOD3
if (PWMD4.state == PWM_READY)
- SMOD3 = 1U;
+ SMOD3 = 1U;
#endif
/* Set Peripheral Clock.*/
@@ -908,12 +908,12 @@ void pwm_lld_stop(PWMDriver *pwmp) {
#endif
/* Disable peripheral clock if there is not an activated module.*/
- if ( (pwmp->flexpwmp->MCTRL.B.RUN & 0b0001) ||
- (pwmp->flexpwmp->MCTRL.B.RUN & 0b0010) ||
- (pwmp->flexpwmp->MCTRL.B.RUN & 0b0100) ||
- (pwmp->flexpwmp->MCTRL.B.RUN & 0b1000) == 0 ) {
- halSPCSetPeripheralClockMode(SPC5_FLEXPWM0_PCTL,
- SPC5_PWM_FLEXPWM0_STOP_PCTL);
+ if ((pwmp->flexpwmp->MCTRL.B.RUN & 0b0001) ||
+ (pwmp->flexpwmp->MCTRL.B.RUN & 0b0010) ||
+ (pwmp->flexpwmp->MCTRL.B.RUN & 0b0100) ||
+ (pwmp->flexpwmp->MCTRL.B.RUN & 0b1000) == 0) {
+ halSPCSetPeripheralClockMode(SPC5_FLEXPWM0_PCTL,
+ SPC5_PWM_FLEXPWM0_STOP_PCTL);
}
}
}
@@ -931,8 +931,8 @@ void pwm_lld_stop(PWMDriver *pwmp) {
* @notapi
*/
void pwm_lld_enable_channel(PWMDriver *pwmp,
- pwmchannel_t channel,
- pwmcnt_t width) {
+ pwmchannel_t channel,
+ pwmcnt_t width) {
#if SPC5_PWM_USE_SMOD0
if (&PWMD1 == pwmp) {
@@ -1023,13 +1023,13 @@ void pwm_lld_change_period(PWMDriver *pwmp, pwmcnt_t period) {
pwmp->flexpwmp->SUB[0].VAL[1].R = pwmperiod / 2;
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
+ case EDGE_ALIGNED_PWM:
/* Setting active front of PWM channels.*/
- pwmp->flexpwmp->SUB[0].VAL[2].R = ~(pwmperiod / 2) + 1U;
- pwmp->flexpwmp->SUB[0].VAL[4].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[0].VAL[2].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[0].VAL[4].R = ~(pwmperiod / 2) + 1U;
break;
- default:
+ default:
;
}
pwmp->flexpwmp->MCTRL.B.LDOK |= 0b0001;
@@ -1045,13 +1045,13 @@ void pwm_lld_change_period(PWMDriver *pwmp, pwmcnt_t period) {
pwmp->flexpwmp->SUB[1].VAL[1].R = pwmperiod / 2;
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
+ case EDGE_ALIGNED_PWM:
/* Setting active front of PWM channels.*/
- pwmp->flexpwmp->SUB[1].VAL[2].R = ~(pwmperiod / 2) + 1U;
- pwmp->flexpwmp->SUB[1].VAL[4].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[1].VAL[2].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[1].VAL[4].R = ~(pwmperiod / 2) + 1U;
break;
- default:
+ default:
;
}
pwmp->flexpwmp->MCTRL.B.LDOK |= 0b0010;
@@ -1067,13 +1067,13 @@ void pwm_lld_change_period(PWMDriver *pwmp, pwmcnt_t period) {
pwmp->flexpwmp->SUB[2].VAL[1].R = pwmperiod / 2;
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
+ case EDGE_ALIGNED_PWM:
/* Setting active front of PWM channels.*/
- pwmp->flexpwmp->SUB[2].VAL[2].R = ~(pwmperiod / 2) + 1U;
- pwmp->flexpwmp->SUB[2].VAL[4].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[2].VAL[2].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[2].VAL[4].R = ~(pwmperiod / 2) + 1U;
break;
- default:
+ default:
;
}
pwmp->flexpwmp->MCTRL.B.LDOK |= 0b0100;
@@ -1089,13 +1089,13 @@ void pwm_lld_change_period(PWMDriver *pwmp, pwmcnt_t period) {
pwmp->flexpwmp->SUB[3].VAL[1].R = pwmperiod / 2;
switch (pwmp->config->mode & PWM_OUTPUT_MASK) {
- case EDGE_ALIGNED_PWM:
+ case EDGE_ALIGNED_PWM:
/* Setting active front of PWM channels.*/
- pwmp->flexpwmp->SUB[3].VAL[2].R = ~(pwmperiod / 2) + 1U;
- pwmp->flexpwmp->SUB[3].VAL[4].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[3].VAL[2].R = ~(pwmperiod / 2) + 1U;
+ pwmp->flexpwmp->SUB[3].VAL[4].R = ~(pwmperiod / 2) + 1U;
break;
- default:
+ default:
;
}
pwmp->flexpwmp->MCTRL.B.LDOK |= 0b1000;