mrengineer (20.02.2012 08:59, просмотров: 151) ответил rezident на Для того, чтобы постить исходники в удобочитаемом виде нужно зарегистрироваться. Или залогиниться, если регистрация уже есть.
resident, спасибо! Почему-то с домашнего компа не мог залогиниться. А вот и исходник
#define BV(n) (1<<n)
...
//Участок кода вызывается из цикла в main():
} else if(packetReceived) {
/* RADIO SHOULD BE IN RX MODE. + Wait for the RSSI to be valid:
* Just having the Radio ON is not enough to read
* the correct RSSI value. The Radio must in RX mode for
* a certain duration. This duration depends on
* the baud rate and the received signal strength itself.
*/
ReceiveOn(); //вообще, я и так должен быть в RX. Но добавил для гарантии этого...
while(!(RF1AIN & BV(1))); //здесь я повисаю
signed char rssi_dat = CalculateRssi(ReadSingleReg(RSSI));
RxBufferLength = ReadSingleReg( RXBYTES );
ReadBurstReg(RF_RXFIFORD, RxBuffer, RxBufferLength);
printf ("RX %i bytes, RSSI=%i dBm\r", RxBuffer[0], rssi_dat);
так вот, без while(!(RF1AIN & BV(1))); я вижу -110dBm (нормальный фон), а с ним висну.
Может, кто-нибудь подскажет в чем косяк?