Google is your friend here.

No, it’s nothing to do with the ADC resolution, it’s the filter time constant. It just so happened that a value round about that number seemed good enough, so one that could be done with a bit shift seemed a good idea at the time.

However, with experience of doing it a different way, that filter doesn’t seem to be the best. The way it’s done in emonLibCM seems to offer a worthwhile improvement in performance.

Initially, in early versions of emonLib, the offset arising from the input bias voltage was removed by a high pass filter.

This, while effective, could not be satisfactorily initialised, with the consequence that a large spike would appear in the output as the filter settled, requiring the output to be inhibited for the first few sampling periods. This filter was replaced by straight arithmetic subtraction of the offset, the actual offset value being obtained by a low pass filter, which could be initialised to the expected value. However, this still allowed a small degree of ripple to enter the readings.

However, it is not necessary to remove the offset immediately. If it can be assumed that the offset remains stable over the sampling period, it can be removed after sampling is complete. To do this in a practical manner, the nominal offset is removed by subtracting half the ADC count (simply to reduce the size of the numbers) and the average input value is obtained by totalling the samples and dividing by the sample count. The rms of the combined signal plus the residual offset is obtained in the usual way, by multiplying each sample by itself and accumulating the total. The true rms average is then obtained from

[rms of signal+offset]= √ (signal^{2} + offset^{2} ).

This calculation is used for voltage and current. For the real power calculation, it is only necessary to subtract the product of voltage offset and current offset (the ‘offset power’) from the average power (the average of the instantaneous powers).

And neither does the Atmel 328P - which is why it’s done the way it is, for battery power anyway. The perceived problem with the '328P is the uncertainty in the initial value of the internal reference, which is thought to cast doubt on the long-term accuracy, so the nominal value of the supply regulator is used for the emonTx and emonPi.