Fix RSSI bug in duplex mode

pull/80/head
Andy CA6JAU 7 years ago
parent 03f276db2c
commit 5834da83d8

@ -113,7 +113,7 @@ uint16_t CIO::readRSSI()
// Register 7, readback enable, ADC RSSI mode // Register 7, readback enable, ADC RSSI mode
AD7021_RB = 0x0147; AD7021_RB = 0x0147;
// Send control register // Send control register
for(AD7021_counter = 8; AD7021_counter >= 0; AD7021_counter--) { for(AD7021_counter = 8; AD7021_counter >= 0; AD7021_counter--) {
if(bitRead(AD7021_RB, AD7021_counter) == HIGH) if(bitRead(AD7021_RB, AD7021_counter) == HIGH)
@ -128,9 +128,16 @@ uint16_t CIO::readRSSI()
} }
SDATA_pin(LOW); SDATA_pin(LOW);
SLE_pin(HIGH);
if (!m_duplex)
SLE_pin(HIGH);
#if defined(DUPLEX)
if (m_duplex)
SLE2_pin(HIGH);
#endif
dlybit(); dlybit();
// Read SREAD pin // Read SREAD pin
for(AD7021_counter = 17; AD7021_counter >= 0; AD7021_counter--) { for(AD7021_counter = 17; AD7021_counter >= 0; AD7021_counter--) {
SCLK_pin(HIGH); SCLK_pin(HIGH);
@ -144,12 +151,17 @@ uint16_t CIO::readRSSI()
} }
SLE_pin(LOW); if (!m_duplex)
SLE_pin(LOW);
#if defined(DUPLEX)
if (m_duplex)
SLE2_pin(LOW);
#endif
// Process RSSI code // Process RSSI code
RB_code = RB_word & 0x7f; RB_code = RB_word & 0x7f;
gain_code = (RB_word >> 7) & 0x0f; gain_code = (RB_word >> 7) & 0x0f;
switch(gain_code) { switch(gain_code) {
case 0b1010: case 0b1010:
gain_corr = 0U; gain_corr = 0U;

Loading…
Cancel
Save

Powered by TurnKey Linux.