Hi,
I've never written a PICaxe program to measure mains (ac) power, nor examined the ADS1025 data sheet, but I have paid some attention to maximising the speed of PICaxe programs. Obviously, the speed can't compare with custom Assembler or Pre-Compiled code, but here are a few tips to achieve the best from a PICaxe. The 08M2 is the fastest M2 (because it has less memory and pins to access) and although the X2s can run at twice the clock speed, they have longer "Tokens" (because they have more instructions, more pins and more memory) so they might not be much faster. Also, some of the more "advanced" instructions are actually "System-Created Macros" which may be slower than writing equivalent functions yourself.
There is no speed penalty in using Word Variables instead of Bytes in calculations, but storing data is limited to byte-width. However, there is no additional time penalty when adding the Auto-increment (address) in @BPTRINC Reads and Writes. Similarly READADC10 is always performed (and truncated for READADC), taking a similar time to most other PICaxe instructions. But it has its own clock which I believe does not fully implement SETFREQ (but a POKESFR could fix that). However, it appears that the fastest way to transfer data with a PICaxe is via HI2CIN/OUT, which is (potentially) faster than PEEKs and POKEs, particularly of multi-variable strings. But probably the greatest weakness of the PIC(axe) ADC is that it's unsigned, thus likely to add complications to any Hardware and Software implementation.
For the architecture, three consecutive Reads , e.g. V,I,V seem sufficient for each sample, or better I,V,I where the ADC current range could be halved to reduce power losses in the current-sensing resistor. PICaxe Basic can create a 32-bit product using the * and ** operators consecutively on the same word values, but a 16-bit result may well be sufficient if up to 16 or 20 instantaneous values are being accumulated over each single mains cycle. I suspect that the primary issues concerning the accuracy of any "Power" measurements, is the accuracy of the ADC Reference, the value/calibration of the current-sensing resistor(s) and of course the zero reference point.
Well, that's about all that I can think of that might be relevant at the moment. BTW the link above to my first Code Snippet appears to be broken, but it should be
HERE.
Cheers, Alan.