This particular chip, as well as many other PIC, allows the factory calibration value to be fine-tuned, through OSCTUNE.
I did a series of experiment and here is what I got, again, measuring the same 19.44Mhz oscillator output:
OSCTUNE - Frequency Reading (Mhz)
-3 - 19.53
-2 - 19.52
-1 - 19.50
0 - 19.47
1 - 19.44
2 - 19.43
3 - 19.41
So the default oscillator runs a little bit too slow (-> higher readings). So by trimming the oscillator a little bit faster, we can get more accurate readings.
OSCTUNE = 1 looks to be the right number.
I will revise the firmware so that the osctune value is read off eeprom. This allows the user to calibrate the value to his own oscillator / chip.
Here is a picture of the meter running with OSCTUNE = 1.
The green arrow points to a led that blinks at 1pps -> it indicates gate time / operation of the meter, but more importantly, allows the meter to be trained, in the future, by a high quality reference source, like a gps: with minimal modification, we can make this meter, plus the vctcxo and a gps with 1pps output, into a gps-disciplined oscillator, thus beating the 2.5ppm spec of the tco-919 oscillator we are using.
More on that later.