|
29 | 29 |
|
30 | 30 | // configuration options
|
31 | 31 | #define PWM_FREQ_BASE 1000000 // Base frequency 1 MHz = 1000000
|
32 |
| -#define PWM_MODE 1 // 0 = 32-bit, 1 = 16-bit low, 2 = 16-bit high |
| 32 | +#ifndef PWM_MODE |
| 33 | + #define PWM_MODE 1 // 0 = 32-bit, 1 = 16-bit low, 2 = 16-bit high |
| 34 | +#endif |
33 | 35 |
|
34 | 36 | // macros
|
35 | 37 | #define PWM_SETCOUNT(x) (x - 1) // set count value
|
@@ -163,8 +165,8 @@ static void _pwmout_dev_init() {
|
163 | 165 |
|
164 | 166 | // initialize SCT outputs
|
165 | 167 | for (i = 0; i < CONFIG_SCT_nOU; i++) {
|
166 |
| - LPC_SCT->OUT[i].SET = (1 << 0); // event 0 will set SCTOUT_xx |
167 |
| - LPC_SCT->OUT[i].CLR = 0; // set clear event when duty cycle |
| 168 | + LPC_SCT->OUT[i].SET = 0; // defer set event until pulsewidth defined |
| 169 | + LPC_SCT->OUT[i].CLR = (1 << 0); // event 0 clears PWM pin |
168 | 170 | }
|
169 | 171 | LPC_SCT->OUTPUT = 0; // default outputs to clear
|
170 | 172 |
|
@@ -252,15 +254,18 @@ void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
|
252 | 254 | void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
|
253 | 255 | // calculate number of ticks
|
254 | 256 | uint32_t v = pwm_clock_mhz * us;
|
| 257 | + uint32_t i = obj->pwm; |
255 | 258 | //MBED_ASSERT(PWM_GETCOUNT(*PWM_MR0) >= v);
|
256 | 259 |
|
257 | 260 | if (v > 0) {
|
258 | 261 | // set new match register value and enable SCT output
|
259 | 262 | *PWM_MR(obj->mr) = PWM_SETCOUNT(v);
|
260 |
| - LPC_SCT->OUT[obj->pwm].CLR = (1 << obj->mr); // on event will clear PWM_XX |
| 263 | + LPC_SCT->OUT[i].SET = (1 << 0); // event 0 sets PWM pin |
| 264 | + LPC_SCT->OUT[i].CLR = (1 << obj->mr); // match event clears PWM pin |
261 | 265 | } else {
|
262 |
| - // set match to zero and disable SCT output |
| 266 | + // set match to zero and clear SCT output |
263 | 267 | *PWM_MR(obj->mr) = 0;
|
264 |
| - LPC_SCT->OUT[obj->pwm].CLR = 0; |
| 268 | + LPC_SCT->OUT[i].SET = 0; // no set event if no pulsewidth defined |
| 269 | + LPC_SCT->OUT[i].CLR = (1 << 0); // event 0 clears PWM pin |
265 | 270 | }
|
266 | 271 | }
|
0 commit comments