инициализирую так(приемник):
Код: Выделить всё
write(0x05, 0); // правильно?!
write(0x06, 64); // Valid preamble interrupt
статус девайса 33(RX State+RX FIFO Empty Status)
int status1: 160 (TX FIFO Almost Empty+FIFO Underflow/Overflow Error)
int status2: 3 (icrcerror+ipkvalid)
Но это только полбеды, я читаю статус, если "status&1 == 0", значит модуль уже не в режиме приема, что означает что данные приняты, читаю пакет, все норм, читаю RSSI.....беда!ipkvalid: Will be set upon full and correct reception of a packet (no RX abort). It is not automatically
cleared by simply re-entering RX mode, but is only cleared upon detection of a valid Sync
Word in the next RX packet. Packet Valid functionality is not available if the RX Packet
Handler (enpacrx bit D7 in SPI Reg 30h) is not enabled.
icrcerror: Will be set if the CRC computed during RX differs from the CRC sent in the packet by the
TX. It is cleared upon start of data reception in a new packet. CRC functionality is not
available if the RX Packet Handler (enpacrx bit D7 in SPI Reg 30h) is not enabled.
Значение RSSI - 40-60(причем если прочиталось "вовремя", значение верное, т.е. около 200).
То есть, чтобы прочитать RSSI, нужно повесить обработчик прерывания? Так?
Но ведь это катастрофа(я про быстродействие), внутри этого прерывания нужно проверять "статус" или "длину пакета", или еще что-то, а, ведь, данные идут через SPI (что не так уж и быстро), и только убедившись что прошло то, что нужно, читать RSSI...
А если есть другие прерывания? Разрешать прерывания при входе в это прерывание??!
Уже несколько дней бьюсь над этим вопросом....
То есть вопрос такой: Как получить данные rssi?(по возможности не используя прерывание/или учитывать что есть и другие прерывания)
Помогите пожалуйста... Уже не знаю, что делать....


