Trouble reading V_BG
The problem is that a 2ms delay is required after setting the ADMUX bits before starting the conversion.  Thank you Majenko for the link.

int readVBG(int _analogReference) {
  uint8_t low, high;
  ADMUX = (_analogReference &lt;&lt; 6) | 14;
  delay(2); // Wait for voltage to settle
  sbi(ADCSRA, ADSC);
  while (bit_is_set(ADCSRA, ADSC));
  low  = ADCL;
  high = ADCH;
  return (high &lt;&lt; 8) | low;
}


The above code is specifically for the Arduino UNO.  Majenko's link above has #ifdef statements which support other devices.