Skip to main content
AElgh
Associate III
May 21, 2023
Question

LoRaWAN-End-Node + VL53L4CD, Sleep issue

  • May 21, 2023
  • 1 reply
  • 995 views

Hello, I'm using the LoRaWAN-End-Node example on an STM32WL55JC MCU to drive the VL53L4CD sensor.  

I would like to use the interrupt pin to get the data from the sensor.

what is happening is that once __WFI() in the getting data subroutine is executed (code below), the LoRaWAN cycle seems to be broken.

How can i embed the "Sleep until an interrupt" in the LoRaWAN cycle?

Thank you...

void VL53_data_interrupt(cData_t *sensordata)
{
	// static uint8_t i = 0;
 
	 while (meas_count < NUM_MEASUREMENTS)
	 {
	 __WFI(); // Wait for interrupt
 
	 if (IntCount != 0)
	 {
	 IntCount = 0;
 
	 /* (Mandatory) Clear HW interrupt to restart measurements */
	 VL53L4CD_ClearInterrupt(sensordata->Vl53_Dev);
 
	 /* Read measured distance. RangeStatus = 0 means valid data */
	 VL53L4CD_GetResult(sensordata->Vl53_Dev, &(sensordata->VL53_Res));
 
	 if (sensordata->VL53_Res.range_status == 0)
	 {
	 Arr_dist_mm[meas_count] = sensordata->VL53_Res.distance_mm;
 
	// printf("Distance = %3u mm\n", results.distance_mm);
 
	 Acc_Dist += sensordata->VL53_Res.distance_mm;
 
	 meas_count++;
	 }
	 }
	 }
 
	 uint32_t Av_Distance = Acc_Dist / NUM_MEASUREMENTS;
 
	 printf("Average distance = %5lu mm\n", Av_Distance);
 
	 meas_count = 0;
 
	 Acc_Dist = 0;
}

This topic has been closed for replies.

1 reply

Tesla DeLorean
Guru
May 21, 2023

You're trying to do this in an INTERRUPT ??

Need to come up with a method that does this statefully

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
AElgh
AElghAuthor
Associate III
May 25, 2023

The Interrupt is working fine until the Stop-Mode is enabled then a strange behavior starts to happen:

  • sensor data is captured only once :

As the XShut(Interrupt-Pin) gets triggered when the MCU 1st stars.

  • the data is wrong.

I can go with the busy-wait solution but I'm trying to optimize the power as much as possible.