Hello,
I am using the TI RTOS in conjunction with obtaining the Temperature and Battery Monitor input voltage. My questions is directly related to the Battery Monitor voltage. The TI RTOS has a API of:
battery_volt_ti = AONBatMonBatteryVoltageGet();
This returned value has the voltage of whole number in bits [10:8] and bits [7:0] represent the fractional decimal value. I have a high end power supply that I can control the output voltage to 1 mV. As I increase the voltage slowly, I have noticed that the returned value jumps in a non +1 fashion. For example here is my test code:
AONBatMonEnable(); // Needed to enable
while (1)
{
Task_sleep(SLEEP_FOR_1S);
battery_measure_ready = AONBatMonNewBatteryMeasureReady();
battery_volt_ti = AONBatMonBatteryVoltageGet();
// Note battery_volt_ti[10:8] = whole voltage
// battery_volt_ti[7:0] = fraction portion.
sprintf(txt,"Battery Monitor (%d) = %x\r\n", battery_measure_ready,battery_volt_ti);
uprintf(txt);
temp = ((battery_volt_ti & 0xFF) * 3922) / 1000;
sprintf(txt,"Battery Monitor Voltage = %d.%03d\r\n", battery_volt_ti >> 8, temp);
uprintf(txt);
}
what I am finding out is that by increasing the voltage 3.116V to 3.117V the output changes from 0x318 to 0x324. I understand about the accuracy and resolution, but I was expecting the AD to produce and increasing value of say 0x319. This happens in a similar manner when going down. There is 8 bits of resolution in the structure from the register for the fractional decimal value, so why is it jumping for such a low change in input voltage.
Thank you,
Shawn