Ardutester - Arduino Component Tester (INCOMPLETO)

Alla 4° lettura, se il valore è inferiore a 1024, quindi meno di 256 a lettura e se è stato settato l'autoscale con riferimento normale (5V)

 if ((Counter == 4) && ((unsigned int)Value < 1024) && !(Probe & (1 << REFS1)) && (Config.AutoScale == 1))
      {
        Probe |= (1 << REFS1);                    //Select internal bandgap reference
        cycle = true;
        break;                                    //Re-run sampling 
      }

viene impostato il rifermento a 1.1V, la variabile cycle è vera e il ciclo ricomincia. (prima qui c'era un orribile goto. :grin:
Così migliora la risoluzione in lettura.
Terminato il campionamento, le solite operazioni.

if (Probe & (1 << REFS1)) U = Config.U_Bandgap; //Bandgap reference
  else U = UREF_VCC;                              //Vcc reference   
  //Convert to voltage
  Value *= U;                                     //ADC readings U_ref 
  //Value += 511 * Config.Samples;                //Automagic rounding
  Value /= 1024;                                  // / 1024 for 10bit ADC
  //De-sample to get average voltage
  Value /= Config.Samples;
  U = (unsigned int)Value;
  return U;

Il valore viene moltiplicato per il valore di riferimento, 1.1V o 5V, diviso per 1024 (dovrebbe essere 1023??), e diviso per il numero di campioni.

Tutto questo, la prima volta, dovrebbe restituire 1100 mV.