summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichele Bini <michele.bini@gmail.com>2022-04-12 04:13:24 (GMT)
committerMichele Bini <michele.bini@gmail.com>2022-04-12 04:13:24 (GMT)
commitd3c01a4af9cc55aa51c13e629c262acd245cf82e (patch)
tree9c10d27b3c042628c6ad5108f0ac4e24fe1fc9b2
parent502dfad3d3dd062b37722ea65ec42908139b2e17 (diff)
Pwm backlight, code adapted from InfiniTime github pull request 'Add PWM Backlight'
-rw-r--r--src/components/brightness/BrightnessController.cpp20
-rw-r--r--src/components/brightness/BrightnessController.h2
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};
};
}
}