Answer
By default the BT900 ADC output is scaled to mimic the BL600 in order to ensure that the same raw value is returned when reading the same input voltage; the BL600 has a 10-bit ADC and uses a 1.2V Vref. This behavior is controlled by configuration register (at+cfg) 2301. The default setting for this register is 0. To realize the full 12-bit resolution, referenced to the externally applied AVCC, configuration register 2301 needs to be == 2. On the BT900 issue the following command in Interactive Mode: AT+CFG 2301 2 Or use the following function in your smart BASIC script: NvCfgKeySet(2301,2)