summaryrefslogtreecommitdiff
path: root/src/components/brightness/BrightnessController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/brightness/BrightnessController.cpp')
-rw-r--r--src/components/brightness/BrightnessController.cpp20
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);
}