2. Done, similar results to the original port. In fact that's what I did earlier, using the "Battery Votage" testing pin. They all have a problem with voltages below 1V(at the pin).
When the voltage at the ADC pin is below the voltage of the internal band-gap reference the tester switches to the band-gap reference for better resolution and accuracy (both OSHW firmwares do this). Most likely there's a problem around the AREF pin. We use a small cap at the AREF pin to buffer the reference voltage (switched between Vcc and internal band-gap).
Quick recap: T7 Plus, v1.1 with a mega324pa(allegedly original), with erroneous measurement of all ADC inputs below 1V, affecting zener and resistance measurement. As suggested by @madires and @indman, tried removing O/V protection, different firmwares(k and m), changing(or removing the AREF cap) with similar results.
Eventually I found a workaround- reading more about the internal bandgap reference on atmega chips, I found someone mentioning that switching from VCC reference to bandgap is a lot slower than the other way around. So I just changed the priority( inside ADC.c) from VCC to bandgap(changes shown in orange, original statement in green:
/* auto-switch voltage reference for low readings */
if (Counter == 4) /* 5 samples */
{
if ((uint16_t)Value >= 1024) //
if ((uint16_t)Value < 1024) /* < 1V (5V / 5 samples) */
{
if (Ref == ADC_REF_BANDGAP)//
if (Ref != ADC_REF_BANDGAP) /* bandgap ref not selected */
{
if (Cfg.AutoScale == 1) /* autoscaling enabled */
{
Channel &= ~ADC_REF_MASK; /* clear reference bits */
Channel |= ADC_REF_VCC;//
Channel |= ADC_REF_BANDGAP; /* select bandgap reference */
goto sample; /* re-run sampling */
}
}
}
}
Now everything works fine. Thanks for all suggestions!