status = NRF24_ReadReg(STATUS); //1
if(status & 0x40) {
NRF24_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);
NRF24_WriteReg(STATUS, 0x40); //2
Выполняет он прием данных, т е считывает регистр статуса, если там выставлен флаг прихода данных, читаем данные, и переписывает регистр статуса с сброшенными битами приема. В чем тут проблема - если приходит новый пакет между точками 1 и 2, мы об этом факте не узнаем, так как регистр статуса уже прочитан, после чего пришел новый пакет, и мы на позиции 2 инфу об этом факте затираем. Данная проблема не проявляет себя при низких скоростях, но вот как только к данные начинают идти подряд от значительно более быстрого устройства, она происходит регулярно. При этом насколько я понимаю, ножка IRQ сбрасывается именно при изменении регистра статуса. Т е один фиг, что через прерывание работать, что через статус, все равно эта ситуация будет иметь место быть. Посмотрел код либы на ардуино, там то же самое сделано. Как собственно правильно принимать данные от этой железяки?