This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

nRF52832 PCA10040 PWM

Hi, I try to generate a PWM signal on PCA10040 with the nRF52832. To do that I copied the code from the Product Specification into my application, but nothing comes out.

Have someone an idee, why?

uint16_t PWM_CH0_DUTY = 8000;
uint16_t PWM_CH1_DUTY = 2000;
  
uint16_t pwm_seq[2]       = { PWM_CH0_DUTY, PWM_CH1_DUTY };
NRF_PWM0->PSEL.OUT[0] = (DBG_1_PIN << PWM_PSEL_OUT_PIN_Pos) | 
                                          (PWM_PSEL_OUT_CONNECT_Connected << PWM_PSEL_OUT_CONNECT_Pos);
NRF_PWM0->PSEL.OUT[1] = (DBG_2_PIN << PWM_PSEL_OUT_PIN_Pos) |  (PWM_PSEL_OUT_CONNECT_Connected << PWM_PSEL_OUT_CONNECT_Pos);
NRF_PWM0->ENABLE = (PWM_ENABLE_ENABLE_Enabled << PWM_ENABLE_ENABLE_Pos);
NRF_PWM0->MODE = (PWM_MODE_UPDOWN_Up << PWM_MODE_UPDOWN_Pos);
NRF_PWM0->PRESCALER = (PWM_PRESCALER_PRESCALER_DIV_1 << PWM_PRESCALER_PRESCALER_Pos);
NRF_PWM0->COUNTERTOP = (16000 << PWM_COUNTERTOP_COUNTERTOP_Pos);             //1 msec
NRF_PWM0->LOOP = (PWM_LOOP_CNT_Disabled << PWM_LOOP_CNT_Pos);
NRF_PWM0->DECODER = (PWM_DECODER_LOAD_Individual << PWM_DECODER_LOAD_Pos) |  (PWM_DECODER_MODE_RefreshCount << PWM_DECODER_MODE_Pos);
NRF_PWM0->SEQ[0].PTR = ((uint32_t)(pwm_seq) << PWM_SEQ_PTR_PTR_Pos);
NRF_PWM0->SEQ[0].CNT = ((sizeof(pwm_seq) / sizeof(uint16_t)) << PWM_SEQ_CNT_CNT_Pos);
NRF_PWM0->SEQ[0].REFRESH    = 0;
NRF_PWM0->SEQ[0].ENDDELAY   = 0;
NRF_PWM0->TASKS_SEQSTART[0] = 1;
Related