Over two years ago I posted this thread: MYKONOS_getObsRxDecPower returns 0 - Q&A - Design Support AD9371/AD9375 - EngineerZone (analog.com)
However, now that our cards have entered production, this problem seems to have come back and seems to vary from card to card, so I really need to get some better understanding of what is going on when MYKONOS_getObsRxDecPower() function is called and why it might sometimes return a 0 value.
Some basics. FDD, Pin Control Mode, Stable Input to ORX1, MGC on RX and ORX, TX and RX always enabled.
My thread that reads the ORX value is this.
while (1)
{
Set to ORX1_MODE(1) via pin control
Sleep 20 msec
Read via MYKONOS_getObsRxDecPower(&mykDevice, &obsRxDecPower_mdBFS);
while ((obsRxDecPower_mdBFS == 0) && (counter < 100))
{
counter++;
sleep 2 msec
// Re-Read the ORX value
MYKONOS_getObsRxDecPower(&mykDevice, &obsRxDecPower_mdBFS);
}
Print calculated power, raw obsRxDecPower_mdBFS value and counter value
Sleep 200 msec
}
So, as you can see, if MYKONOS_getObsRxDecPower returns a value of 0, I increment the counter, wait 2 msec and read it again, hoping to get a non-zero value. If I do that 100 times without getting a good value, I timeout and return an Invalid Power reading.
As you can see in the log that follows, the number of attempts required to get a non-zero value varies wildly and often exceeds 100. If someone could please examine the ARM code implementation for MYKONOS_getObsRxDecPower and tell me the reasons why a 0 might be returned, it might help me figure out why this is not working consistently.
The mykonos.c does say "If the receiver is disabled during the power measurement, this function returns a 0 value for rx2DecPower_mdBFS" but since I am FDD and the RX is always enabled, I don't believe that is the only possible cause of a 0 being returned.
You can also see in the log that when a non-zero value is returned it is very stable, so 0 being returned is not indicative of too high an input signal. I've also monitored the signal on a spec A and it is stable.
I've also seen that the value for pmdMeasDuration in the mykonosPowerMeasAgcCfg_t affects this. Lower the number the less stable the reading but the counter value is noticeably lower (less 0's being returned), however, as the card warms up, the counter values increase (more 0's returned).
Thank you for any help on this matter.
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 0
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 3
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 5
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 0
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 1
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 3
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 2
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 8
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 1
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 5
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 8
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 28
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 8
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 24
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 3
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 8
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 11
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 3
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 7
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 1
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 9
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 12
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 23
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 18
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 20
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 11
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 20
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 5
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 20
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 2
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 3
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 5
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 22
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 50
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 14
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 34
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 27
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 11
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 1
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 5
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 63
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 43
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 0
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 46
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 16
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 55
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 38
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 13
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 4
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 54
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 31
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 21
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 10
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 10
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 11
returnPower = -3214 dBx100 obsRxDecPower_mdBFS = 22750 counter = 72
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 17
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 37
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 7
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 39
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 27
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 81
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 34
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 59
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 74
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 9
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 33
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 69
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 1
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 18
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 19
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 74
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 2
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 33
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 13
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 62
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 17
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 97
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 29
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 16
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 18
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 9
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 46
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 23
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 46
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 6
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 96
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 57
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 62
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 49
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 78
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 28
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 55
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 35
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 13
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100
returnPower = -3189 dBx100 obsRxDecPower_mdBFS = 22500 counter = 57
returnPower = -10000 dBx100 obsRxDecPower_mdBFS = 0 counter = 100