program if(Flag.rf_reach_timeout) dongusune girdikten sonra while dongusunden cikip rx_data(); fonksiyona ugramadan programin yoluna devam etmesi icin if(Flag.rf_reach_timeout) dongusu nasil duzenlenebilir?
[
void tx_data(void)
{
unsigned char i;
Flag.is_tx = 1;
spi_rw(0x07|0x80, SI4432_PWRSTATE_READY); // enter ready mode
TX1_RX0; // set antenna switch to Tx mode
delay_1ms(5); // delay 5ms for warmup
rf_timeout = 0; // initial tx 500ms timeout
while(nIRQ) // wait for interrupt
{
if(Flag.rf_reach_timeout)
{
SDN = 1; //reset the RF module when not find the interrutp for 500ms
delay_1ms(10);
SDN = 0;
delay_1ms(200);
SI4432_init();
break; // exit
}
}
rx_data(); //enter rx mode after finish tx
}code]
rx_data(); satırını şu hale getirmeniz yeterli: if(!Flag.rf_reach_timeout)rx_data();
ancak "Flag.rf_reach_timeout" değeri başka biryerlerden değişiyorsa iş başka.
char durumBayrak=0;
while(nIRQ) // wait for interrupt
{
if(Flag.rf_reach_timeout)
{
durumBayrak=1;
SDN = 1; //reset the RF module when not find the interrutp for 500ms
delay_1ms(10);
SDN = 0;
delay_1ms(200);
SI4432_init();
break; // exit
}
}
if(durumBayrak){durumBayrak=0; rx_data();} //enter rx mode after finish tx
}