Hi guys.
I'm using the development board NFR52840DK and I modified the sample in zephyr\samples\boards\nrf\nrfx to use twp buttons, sw0 and sw1.
The sw0 button reset a counter when interruption occours and sw1 increments the counter.
I tried this using two DK buttons and eveything worked fine.
The problem occours when I try to configure an enternal button using GPOI1 and pin 3 (P1.3). The code don't work like before. Only sw0 works fine, but sw1 don't.
Using an osciloscope I observed that the pull up on P1.3 wasn't hign and looks like the pin wasn't configured properly.
When I use P0.2 like an external button the code works again.
Then my doubt is how configure GPIO1 with nrfx? What's I'm missing?
The configuration code is
void gpiote_config_pins(void)
{
nrfx_err_t err;
nrfx_gpiote_in_config_t const in_config = {
.sense = NRF_GPIOTE_POLARITY_HITOLO,
.pull = NRF_GPIO_PIN_PULLUP,
.is_watcher = false,
.hi_accuracy = true,
.skip_gpio_setup = false,
};
/* Initialize input pin to generate event on high to low transition
* (falling edge) and call button_handler()
*/
err = nrfx_gpiote_in_init(INPUT_PIN, &in_config, button_handler);
if (err != NRFX_SUCCESS) {
LOG_ERR("nrfx_gpiote_in_init error: %08x", err);
return;
}
err = nrfx_gpiote_in_init(INPUT_PIN1, &in_config, button_handler);
if (err != NRFX_SUCCESS) {
LOG_ERR("input1 nrfx_gpiote_in_init error: %08x", err);
return;
}
nrfx_gpiote_in_event_enable(INPUT_PIN, true); //once per time
nrfx_gpiote_in_event_enable(INPUT_PIN1, true); //once per time
}
and the nrf52840dk_nrf52840.overlay is
&button1 {
gpios = <&gpio1 03 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
};
Someone can help me with this?
Thanks.