The exact period of data transmission

Hello,
I use data transfer in a loop:
snprintf(payload, sizeof(payload), “*%5d/%4d/%1d#”, dataG,Vbat,mode);
while (!send_result)
{
send_result = api.lora.psend(sizeof(payload), (uint8_t *)payload);
if (!send_result)
{
api.lora.precv(0);
delay(10);
}
}
}

I need it to be done with an interval of exactly 50 milliseconds. But I can’t do that - if I insert a delay(xx) it doesn’t help. The period changes by a jump of two times immediately after a gradual increase in the delay. What should I do? Using a timer does not help.

‘api.lora.psend()’ is only starting the transmission, it does immediately return, it does not wait for the transmission to be finished.
You have to use the LoRa P2P TX callback to know when the transmission has been finished.

registerPSendCallback()