diff options
Diffstat (limited to 'src/components/brightness/BrightnessController.cpp')
| -rw-r--r-- | src/components/brightness/BrightnessController.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/components/brightness/BrightnessController.cpp b/src/components/brightness/BrightnessController.cpp index 29de5bb..adcd8c5 100644 --- a/src/components/brightness/BrightnessController.cpp +++ b/src/components/brightness/BrightnessController.cpp @@ -1,6 +1,7 @@ #include "components/brightness/BrightnessController.h" #include <hal/nrf_gpio.h> #include "displayapp/screens/Symbols.h" +#include "nrf_pwm.h" #include "drivers/PinMap.h" using namespace Pinetime::Controllers; @@ -8,8 +9,21 @@ void BrightnessController::Init() { nrf_gpio_cfg_output(PinMap::LcdBacklightLow); nrf_gpio_cfg_output(PinMap::LcdBacklightMedium); nrf_gpio_cfg_output(PinMap::LcdBacklightHigh); - nrf_gpio_pin_clear(PinMap::LcdBacklightLow); - nrf_gpio_pin_set(PinMap::LcdBacklightMedium); - nrf_gpio_pin_set(PinMap::LcdBacklightHigh); + nrf_gpio_pin_set(PinMap::LcdBacklightLow); + nrf_gpio_pin_clear(PinMap::LcdBacklightMedium); + nrf_gpio_pin_clear(PinMap::LcdBacklightHigh); + uint32_t out_pins[] = {PinMap::LcdBacklightHigh, PinMap::LcdBacklightMedium, NRF_PWM_PIN_NOT_CONNECTED, NRF_PWM_PIN_NOT_CONNECTED}; + nrf_pwm_pins_set(NRF_PWM0, out_pins); + nrf_pwm_enable(NRF_PWM0); + nrf_pwm_configure(NRF_PWM0, NRF_PWM_CLK_8MHz, NRF_PWM_MODE_UP, 10000); + nrf_pwm_loop_set(NRF_PWM0, 0); + nrf_pwm_decoder_set(NRF_PWM0, NRF_PWM_LOAD_COMMON, NRF_PWM_STEP_AUTO); + static nrf_pwm_sequence_t seq; + seq.values.p_common = pwmSequence; + seq.length = 1; + seq.repeats = 0; + seq.end_delay = 0; + nrf_pwm_sequence_set(NRF_PWM0, 0, &seq); + nrf_pwm_task_trigger(NRF_PWM0, NRF_PWM_TASK_SEQSTART0); } |
