Datasheet

ADE7116/ADE7156/ADE7166/ADE7169/ADE7566/ADE7569
Rev. B | Page 40 of 152
ENERGY MEASUREMENT
The ADE7116/ADE7156/ADE7166/ADE7169/ADE7566/
ADE7569 offer a fixed function, energy measurement, digital
processing core that provides all the information needed to
measure energy in single-phase energy meters. The part
provides two ways to access the energy measurements: direct
access through SFRs for time sensitive information and indirect
access through address and data SFRs for the majority of energy
measurements. The I
rms
, V
rms
, interrupts, and waveform registers
are readily available through the SFRs, as shown in Table 31 .
Other energy measurement information is mapped to a page of
memory that is accessed indirectly through the MADDPT,
MDATL, MDATM, and MDATH SFRs. The address and data
SFRs act as pointers to the energy measurement internal
registers.
ACCESS TO ENERGY MEASUREMENT SFRs
Access to the energy measurement SFRs is achieved by reading
or writing to the SFR addresses provided in Table 31. The
internal data for the MIRQx SFRs is latched byte by byte into
the SFR when the SFR is read.
The WAV1x, WAV2x, VRMSx, and IRMSx registers are all 3-byte
SFRs. The 24-bit data is latched into these SFRs when the high
byte is read. Reading the low or medium byte before the high
byte results in reading the data from the previous latched sample.
Sample code to read the VRMSx register is as follows:
MOV R1, VRMSH //latches data in VRMSH,
VRMSM, and VRMSL SFRs
MOV R2, VRMSM
MOV R3, VRMSL
ACCESS TO INTERNAL ENERGY MEASUREMENT
REGISTERS
Access to the internal energy measurement registers is achieved
by writing to the energy measurement pointer address SFR
(MADDPT, Address 0x91). This SFR selects the energy measure-
ment register to be accessed and determines whether a read or
a write is performed (see Table 30).
Table 30. Energy Measurement Pointer Address SFR
(MADDPT, Address 0x91)
Bit Description
7 1 = write, 0 = read
[6:0] Energy measurement internal register address
Writing to the Internal Energy Measurement Registers
When Bit 7 of the energy measurement pointer address SFR
(MADDPT, Address 0x91) is set, the content of the MDATx
SFRs (MDATL, MDATM, and MDATH) is transferred to the
internal energy measurement register designated by the address
in the MADDPT SFR. If the internal register is one byte long,
only the MDATL SFR content is copied to the internal register,
and the MDATM SFR and MDATH SFR contents are ignored.
The energy measurement core functions with an internal clock
of 4.096 MHz/5 or 819.2 kHz. Because the 8052 core functions
with another clock, 4.096 MHz2
CD
, synchronization between
the two clock environments when CD = 0 or 1 is an issue. When
data is written to the internal energy measurement registers, a
small wait period needs to be implemented before another read
or write to these registers can take place.
Sample code to write 0x0155 to the 2-byte SAGLVL register
located at Address 0x14 in the energy measurement memory
space is as follows:
MOV MDATM,#01h
MOV MDATL,#55h
MOV MADDPT,#SAGLVL_W (Address 0x94)
MOV A,#05h
DJNZ ACC,$
;Next write or read to energy
measurement SFR can be done after
this.
Reading the Internal Energy Measurement Registers
When Bit 7 of the energy measurement pointer address SFR
(MADDPT, Address 0x91) is cleared, the content of the internal
energy measurement register designated by the address in
MADDPT is transferred to the MDATx SFRs. If the internal
register is one byte long, only the MDATL SFR content is
updated with a new value, and the MDATM SFR and MDATH
SFR contents are reset to 0x00.
The energy measurement core functions with an internal clock
of 4.096 MHz/5 or 819.2 kHz. Because the 8052 core functions
with another clock, 4.096 MHz2
CD
, synchronization between
the two clock environments when CD = 0 or 1 is an issue. When
data is read from the internal energy measurement registers, a
small wait period needs to be implemented before the MDATx
SFRs are transferred to another SFR.
Sample code to read the peak voltage in the 2-byte VPKLVL
register located at 0x16 into the data pointer is as follows:
MOV MADDPT,#VPKLVL_R (Address 0x16)
MOV A,#05h
DJNZ ACC,$
MOV DPH,MDATM
MOV DPL,MDATL