while dongusunden cikmak

Başlatan selvi, 10 Eylül 2014, 10:35:31

selvi

  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]
Yaşam anlamlandırıldıkça kutsaldır....

Gökhan BEKEN

#1
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
}
Özel mesaj okumuyorum, lütfen göndermeyin.