Merge pull request #715 from hubmartin/gpiote-fix
Fix GPIOTE not calling ISR when button is held during boot
This commit is contained in:
commit
9a831a6fe4
|
@ -157,19 +157,21 @@ void SystemTask::Work() {
|
||||||
heartRateSensor.Disable();
|
heartRateSensor.Disable();
|
||||||
heartRateApp.Start();
|
heartRateApp.Start();
|
||||||
|
|
||||||
nrf_gpio_cfg_sense_input(PinMap::Button, (nrf_gpio_pin_pull_t) GPIO_PIN_CNF_PULL_Pulldown, (nrf_gpio_pin_sense_t) GPIO_PIN_CNF_SENSE_High);
|
// Button
|
||||||
nrf_gpio_cfg_output(15);
|
nrf_gpio_cfg_output(15);
|
||||||
nrf_gpio_pin_set(15);
|
nrf_gpio_pin_set(15);
|
||||||
|
|
||||||
nrfx_gpiote_in_config_t pinConfig;
|
nrfx_gpiote_in_config_t pinConfig;
|
||||||
pinConfig.skip_gpio_setup = true;
|
pinConfig.skip_gpio_setup = false;
|
||||||
pinConfig.hi_accuracy = false;
|
pinConfig.hi_accuracy = false;
|
||||||
pinConfig.is_watcher = false;
|
pinConfig.is_watcher = false;
|
||||||
pinConfig.sense = (nrf_gpiote_polarity_t) NRF_GPIOTE_POLARITY_HITOLO;
|
pinConfig.sense = (nrf_gpiote_polarity_t) NRF_GPIOTE_POLARITY_TOGGLE;
|
||||||
pinConfig.pull = (nrf_gpio_pin_pull_t) GPIO_PIN_CNF_PULL_Pulldown;
|
pinConfig.pull = (nrf_gpio_pin_pull_t) GPIO_PIN_CNF_PULL_Pulldown;
|
||||||
|
|
||||||
nrfx_gpiote_in_init(PinMap::Button, &pinConfig, nrfx_gpiote_evt_handler);
|
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, (nrf_gpio_pin_pull_t) GPIO_PIN_CNF_PULL_Pullup, (nrf_gpio_pin_sense_t) GPIO_PIN_CNF_SENSE_Low);
|
nrf_gpio_cfg_sense_input(PinMap::Cst816sIrq, (nrf_gpio_pin_pull_t) GPIO_PIN_CNF_PULL_Pullup, (nrf_gpio_pin_sense_t) GPIO_PIN_CNF_SENSE_Low);
|
||||||
|
|
||||||
pinConfig.skip_gpio_setup = true;
|
pinConfig.skip_gpio_setup = true;
|
||||||
|
@ -180,18 +182,17 @@ void SystemTask::Work() {
|
||||||
|
|
||||||
nrfx_gpiote_in_init(PinMap::Cst816sIrq, &pinConfig, nrfx_gpiote_evt_handler);
|
nrfx_gpiote_in_init(PinMap::Cst816sIrq, &pinConfig, nrfx_gpiote_evt_handler);
|
||||||
|
|
||||||
|
// Power present
|
||||||
pinConfig.sense = NRF_GPIOTE_POLARITY_TOGGLE;
|
pinConfig.sense = NRF_GPIOTE_POLARITY_TOGGLE;
|
||||||
pinConfig.pull = NRF_GPIO_PIN_NOPULL;
|
pinConfig.pull = NRF_GPIO_PIN_NOPULL;
|
||||||
pinConfig.is_watcher = false;
|
pinConfig.is_watcher = false;
|
||||||
pinConfig.hi_accuracy = false;
|
pinConfig.hi_accuracy = false;
|
||||||
pinConfig.skip_gpio_setup = true;
|
pinConfig.skip_gpio_setup = false;
|
||||||
nrfx_gpiote_in_init(PinMap::PowerPresent, &pinConfig, nrfx_gpiote_evt_handler);
|
nrfx_gpiote_in_init(PinMap::PowerPresent, &pinConfig, nrfx_gpiote_evt_handler);
|
||||||
|
nrfx_gpiote_in_event_enable(PinMap::PowerPresent, true);
|
||||||
|
|
||||||
if (nrf_gpio_pin_read(PinMap::PowerPresent)) {
|
// Update controller based on current gpio pin state, needs to be called after gpio config
|
||||||
nrf_gpio_cfg_sense_input(PinMap::PowerPresent, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW);
|
batteryController.Update();
|
||||||
} else {
|
|
||||||
nrf_gpio_cfg_sense_input(PinMap::PowerPresent, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH);
|
|
||||||
}
|
|
||||||
|
|
||||||
batteryController.MeasureVoltage();
|
batteryController.MeasureVoltage();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user