Strange nRF52833DK behaviour with nRF Connect SDK 2.3.0

Dear Support Team,

I recently started evaluating a nRF52833 DK board with the nRF Connect SDK 2.3.0. 

I noticed a very strange behaviour while developing an ADXL accelerometer driver with interrupt handling. This is the setup and the symptoms:

Interrupt is configured on pin 4:

// dts file IRQ pin 
custom_gpios {
	 compatible = "gpio-keys";

	 acc_irq_pin1: acc_irq_pin_1 {
		gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
		label = "ACC IRQ pin";
    };  
};


// handler
void ADXL_IRQhandler(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
{
	if(gpio_pin_get_dt(&sIRQ_pin) == 0)
	{
		printk("Inactivity interrupt\n");
	}
	else
	{
		printk("Activity interrupt\n");
	}
}

//IRQ setup
int32_t ADXL_initIRQ(void)
{
  
	if (!device_is_ready(sIRQ_pin.port)) 
	{
		printk("Error: gpio device %s is not ready\n", sIRQ_pin.port->name);
		return -1;
	}


	if (gpio_pin_configure_dt(&sIRQ_pin, GPIO_INPUT) != 0) 
	{
		printk("Error: failed to configure %s pin %d\n", sIRQ_pin.port->name, sIRQ_pin.pin);
		return -2;
	}

	if (gpio_pin_interrupt_configure_dt(&sIRQ_pin, GPIO_INT_EDGE_BOTH) != 0) 
	{
		printk("Error: failed to configure interrupt on %s pin %d\n", sIRQ_pin.port->name, sIRQ_pin.pin);
		return -3;
	}

    gpio_init_callback(&sIRQ_callback, ADXL_IRQhandler, BIT(sIRQ_pin.pin));

    if (gpio_add_callback(sIRQ_pin.port, &sIRQ_callback)!= 0) 
	{
		printk("Error: failed to add ACC IRQ callback\n");
		return -4;
	}
        
    return 0;
}

After freshly flashing the MCU everything works fine, interrupt handling is great, no problems. Until I power down the kit... when it is repowered again interrupt handling stops working completely and even resetting the board won't help. But when re-flashing the exact same firmware it starts working again!

Do you have any guess why this is happening?

Thank you and all the best,

Viktor

Parents Reply Children
No Data
Related