Interrupt energy intensive

When I program an interrupt, the NRF52840 requires 250uA extra. I read something about the sense interrupt, but I cannot find any working example. How should I implement an interrupt when my power is on a budget?

static const struct gpio_dt_spec signal = GPIO_DT_SPEC_GET(ZEPHYR_USER_NODE, signal_gpios);
static struct gpio_callback _interrupt;

void _isr(const struct device *dev, struct gpio_callback *cb, uint32_t pins) {  
  LOG_INF("isr given");
  k_work_schedule(&_proces, K_NO_WAIT); 
}


void attachinterrupt(void) {

	__ASSERT(device_is_ready(signal.port), "custom device not ready");
	if(gpio_pin_configure_dt(&signal, GPIO_INPUT)) {
    LOG_ERR("error configure signalgpio");
  }

	if(gpio_pin_interrupt_configure_dt(&signal, GPIO_INT_EDGE_TO_ACTIVE)) {
    LOG_ERR("error configure interrupt signalgpio");
  };
	gpio_init_callback(&_interrupt, _isr, BIT(signal.pin));
	if(gpio_add_callback(signal.port, &_interrupt)) {
    LOG_ERR("callback for interrupt not set");
 };
}

I tried to replace gpio_pin_interrupt_configure_dt with a sense configuration, but I don't really get how this is suppose to work:

#include <hal/nrf_gpio.h>

nrf_gpio_cfg_input(signal.pin, NRF_GPIO_PIN_PULLDOWN);
nrf_gpio_cfg_sense_set(signal.pin, NRF_GPIO_PIN_SENSE_HIGH);

Also, I read a pin interrupt consumes more than a port interrupt. How would I implement a port interrupt (my system needs only 1 interrupt)?

Related