From baaa035cf93340b8f2c626bdba47e8066cf40067 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Wed, 22 Nov 2023 05:34:26 -0700 Subject: ADC voltage: battcheck 3 digits, fixed t1616, switched back to 8-bit internal volt unit Before this branch, `voltage` was 6 bits: Volts * 10 A couple patches ago, I upgraded it to 16 bits: 65535 * Volts / 10.24 That costs too much extra ROM on attiny85 though, for extra precision it doesn't even use... so I switched back to an 8-bit value. It's still more precise than before though: Volts * 40 ... and battcheck displays an extra digit now, on devices with ROM for it. ... and battcheck waits a second to get a more accurate measurement before displaying the first value. It has *much* less variation between first and later readings now. Also: - got t1616 builds working again (tested fc13 and thefreeman-boost-fwaa) - upgraded t1616 voltage and temp to 12-bit (10 bits + 4x oversampling) - removed expensive temp conversion from t1616 ADC interrupt - recalibrated t1616 bogomips again; runs faster after interrupt fix - increased t1616 internal VDD measurement resolution by 36% (1.5V Vref, not 1.1V) - fixed sloppy setting of Vref bits I still need to test / update other t1616 builds, and fix all the t85 + t1634 code and build targets. --- arch/avr32dd20.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arch/avr32dd20.h') diff --git a/arch/avr32dd20.h b/arch/avr32dd20.h index 3ebb05a..82951de 100644 --- a/arch/avr32dd20.h +++ b/arch/avr32dd20.h @@ -58,9 +58,9 @@ inline uint16_t mcu_adc_result(); //inline uint16_t mcu_adc_result_temp(); //inline uint16_t mcu_adc_result_volts(); -// return (centiVolts << 6), range 0 to 10.24V +// return Volts * 40, range 0 to 6.375V #define voltage_raw2cooked mcu_vdd_raw2cooked -inline uint16_t mcu_vdd_raw2cooked(uint16_t measurement); +inline uint8_t mcu_vdd_raw2cooked(uint16_t measurement); // return (temp in Kelvin << 6) #define temp_raw2cooked mcu_temp_raw2cooked -- cgit v1.2.3