summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Honal <christoph.honal@web.de>2022-05-10 19:10:28 (GMT)
committerRiku Isokoski <riksu9000@gmail.com>2022-06-05 06:53:22 (GMT)
commit977936e8e256eacb0c1b66e9601143e3f4dec280 (patch)
tree0463d9c563f0afd5247d684d7ac85322c4f8abf5
parent03a2059e875bc03919520c4c4febdf80e23f8164 (diff)
System: Refactor pin and interrupt setup
This should ensure better readability of the pin setup procedure, as well as allow the configuration of the hardware button enable pin and the accelerometer interrupt pin via the pin mapping header.
-rw-r--r--src/drivers/PinMap.h2
-rw-r--r--src/systemtask/SystemTask.cpp28
2 files changed, 11 insertions, 19 deletions
diff --git a/src/drivers/PinMap.h b/src/drivers/PinMap.h
index 167a877..833c647 100644
--- a/src/drivers/PinMap.h
+++ b/src/drivers/PinMap.h
@@ -16,8 +16,10 @@ namespace Pinetime {
static constexpr uint8_t Button = 13;
#endif
+ static constexpr uint8_t ButtonEnable = 15;
static constexpr uint8_t Cst816sIrq = 28;
static constexpr uint8_t PowerPresent = 19;
+ static constexpr uint8_t Bma421Irq = 8;
static constexpr uint8_t Motor = 16;
diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp
index c7e0fc8..200cf3b 100644
--- a/src/systemtask/SystemTask.cpp
+++ b/src/systemtask/SystemTask.cpp
@@ -172,39 +172,29 @@ void SystemTask::Work() {
buttonHandler.Init(this);
- // Button
- nrf_gpio_cfg_output(15);
- nrf_gpio_pin_set(15);
-
+ // Setup Interrupts
nrfx_gpiote_in_config_t pinConfig;
pinConfig.skip_gpio_setup = false;
pinConfig.hi_accuracy = false;
pinConfig.is_watcher = false;
- pinConfig.sense = static_cast<nrf_gpiote_polarity_t>(NRF_GPIOTE_POLARITY_TOGGLE);
- pinConfig.pull = static_cast<nrf_gpio_pin_pull_t>(GPIO_PIN_CNF_PULL_Pulldown);
+ // Button
+ nrf_gpio_cfg_output(PinMap::ButtonEnable);
+ nrf_gpio_pin_set(PinMap::ButtonEnable);
+ pinConfig.sense = NRF_GPIOTE_POLARITY_TOGGLE;
+ pinConfig.pull = NRF_GPIO_PIN_PULLDOWN;
nrfx_gpiote_in_init(PinMap::Button, &pinConfig, nrfx_gpiote_evt_handler);
nrfx_gpiote_in_event_enable(PinMap::Button, true);
// Touchscreen
- nrf_gpio_cfg_sense_input(PinMap::Cst816sIrq,
- static_cast<nrf_gpio_pin_pull_t>(GPIO_PIN_CNF_PULL_Pullup),
- static_cast<nrf_gpio_pin_sense_t>(GPIO_PIN_CNF_SENSE_Low));
-
- pinConfig.skip_gpio_setup = true;
- pinConfig.hi_accuracy = false;
- pinConfig.is_watcher = false;
- pinConfig.sense = static_cast<nrf_gpiote_polarity_t>(NRF_GPIOTE_POLARITY_HITOLO);
- pinConfig.pull = static_cast<nrf_gpio_pin_pull_t>(GPIO_PIN_CNF_PULL_Pullup);
-
+ pinConfig.sense = NRF_GPIOTE_POLARITY_HITOLO;
+ pinConfig.pull = NRF_GPIO_PIN_PULLUP;
nrfx_gpiote_in_init(PinMap::Cst816sIrq, &pinConfig, nrfx_gpiote_evt_handler);
+ nrfx_gpiote_in_event_enable(PinMap::Cst816sIrq, true);
// Power present
pinConfig.sense = NRF_GPIOTE_POLARITY_TOGGLE;
pinConfig.pull = NRF_GPIO_PIN_NOPULL;
- pinConfig.is_watcher = false;
- pinConfig.hi_accuracy = false;
- pinConfig.skip_gpio_setup = false;
nrfx_gpiote_in_init(PinMap::PowerPresent, &pinConfig, nrfx_gpiote_evt_handler);
nrfx_gpiote_in_event_enable(PinMap::PowerPresent, true);