diff options
| author | Michele Bini <michele.bini@gmail.com> | 2022-04-12 04:13:24 (GMT) |
|---|---|---|
| committer | Michele Bini <michele.bini@gmail.com> | 2022-04-12 04:13:24 (GMT) |
| commit | d3c01a4af9cc55aa51c13e629c262acd245cf82e (patch) | |
| tree | 9c10d27b3c042628c6ad5108f0ac4e24fe1fc9b2 | |
| parent | 502dfad3d3dd062b37722ea65ec42908139b2e17 (diff) | |
Pwm backlight, code adapted from InfiniTime github pull request 'Add PWM Backlight'
| -rw-r--r-- | src/components/brightness/BrightnessController.cpp | 20 | ||||
| -rw-r--r-- | src/components/brightness/BrightnessController.h | 2 |
2 files changed, 19 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); } diff --git a/src/components/brightness/BrightnessController.h b/src/components/brightness/BrightnessController.h index 31ef40a..b8529d5 100644 --- a/src/components/brightness/BrightnessController.h +++ b/src/components/brightness/BrightnessController.h @@ -7,6 +7,8 @@ namespace Pinetime { class BrightnessController { public: void Init(); + private: + uint16_t pwmSequence[1] = {80}; }; } } |
