I actually have / had some example code. I'm looking for it.

~ edit ~

  long readVcc() {
  ADMUX = _BV(MUX3) | _BV(MUX2);   // Set reference to Vcc and measurement to internal 1.1V bandgap

delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring

uint8_t low = ADCL; // must read ADCL first, it then locks ADCH
uint8_t high = ADCH; // unlocks both

long result = (high<<8) | low;
//Note: might need to discard first result

result = 1125300L / result; // Calculate Vcc in millivolts; 1125300 = 1.110231000
return result;
}