From d3c01a4af9cc55aa51c13e629c262acd245cf82e Mon Sep 17 00:00:00 2001 From: Michele Bini Date: Tue, 12 Apr 2022 06:13:24 +0200 Subject: Pwm backlight, code adapted from InfiniTime github pull request 'Add PWM Backlight' 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 #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}; }; } } -- cgit v0.10.2