Skip to content
Snippets Groups Projects
Commit ffd1f29d authored by Sam Calisch's avatar Sam Calisch
Browse files

added pwm

parent a4abad43
No related branches found
No related tags found
No related merge requests found
Pipeline #
//sec 2017
uint16_t pwms[1] = {0}; //duty cycles. can put more to loop through a sequence
const uint8_t pwm_pin = 26; //p26
void setup() {
//Use PWM module. Can also use a timer and ppi.
NRF_GPIO->DIRSET = (1<<pwm_pin); //set ref pin as output
NRF_GPIO->OUTCLR = (1<<pwm_pin); //set ref pin low
NRF_PWM0->PSEL.OUT[0] = (pwm_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); //16MHz tick
NRF_PWM0->COUNTERTOP = (1600 << PWM_COUNTERTOP_COUNTERTOP_Pos); //10 kHz pwm freq.
NRF_PWM0->LOOP = (PWM_LOOP_CNT_Disabled << PWM_LOOP_CNT_Pos);
NRF_PWM0->DECODER = (PWM_DECODER_LOAD_Common << PWM_DECODER_LOAD_Pos) | (PWM_DECODER_MODE_RefreshCount << PWM_DECODER_MODE_Pos);
pwms[0] = 800;
NRF_PWM0->SEQ[0].PTR = ((uint32_t)(pwms) << PWM_SEQ_PTR_PTR_Pos);
NRF_PWM0->SEQ[0].CNT = (1 << PWM_SEQ_CNT_CNT_Pos);
NRF_PWM0->SEQ[0].REFRESH = 0;
NRF_PWM0->SEQ[0].ENDDELAY = 0;
NRF_PWM0->TASKS_SEQSTART[0] = 1;
}
void loop() {}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment