diff --git a/flight/pios/common/pios_rfm22b.c b/flight/pios/common/pios_rfm22b.c index 36f0c7a96..6d92fd4e1 100644 --- a/flight/pios/common/pios_rfm22b.c +++ b/flight/pios/common/pios_rfm22b.c @@ -1376,7 +1376,7 @@ static enum pios_radio_event rfm22_init(struct pios_rfm22b_dev *rfm22b_dev) } // Wait 1ms if not. - PIOS_DELAY_WaitmS(1); + vTaskDelay(1 + (1/(portTICK_RATE_MS+1))); } // **************** @@ -1481,6 +1481,15 @@ static enum pios_radio_event rfm22_init(struct pios_rfm22b_dev *rfm22b_dev) // x-nibbles rx preamble detection rfm22_write(rfm22b_dev, RFM22_preamble_detection_ctrl1, RX_PREAMBLE_NIBBLES << 3); + // Release the bus + rfm22_releaseBus(rfm22b_dev); + + // Yield the CPU. + vTaskDelay(1 + (1/(portTICK_RATE_MS+1))); + + // Claim the SPI bus. + rfm22_claimBus(rfm22b_dev); + // header control - using a 4 by header with broadcast of 0xffffffff rfm22_write(rfm22b_dev, RFM22_header_control1, RFM22_header_cntl1_bcen_0 | @@ -1530,6 +1539,9 @@ static enum pios_radio_event rfm22_init(struct pios_rfm22b_dev *rfm22b_dev) // Release the bus rfm22_releaseBus(rfm22b_dev); + // Yield the CPU. + vTaskDelay(1 + (1/(portTICK_RATE_MS+1))); + // Initialize the frequency and datarate to te default. rfm22_setNominalCarrierFrequency(rfm22b_dev, 0); pios_rfm22_setDatarate(rfm22b_dev);