25#include <sfTk/sfToolkit.h>
26#include <sfTk/sfTkII2C.h>
191 sfTkError_t
begin(sfTkIBus *theBus =
nullptr);
209 sfTkError_t
reset(
void);
301 sfTkError_t
getIRMSA(uint32_t &value);
306 sfTkError_t
getIRMSB(uint32_t &value);
741 static const uint16_t
kRegV = 0x318;
Platform-independent driver for the ADE7953 energy metering IC.
Definition: sfDevADE7953.h:179
sfTkError_t getIRMSB(uint32_t &value)
Read the raw IRMS value for Current Channel B.
Definition: sfDevADE7953.cpp:255
sfTkError_t setCurrentClampA(sfe_ade7953_clamp_t clamp)
Select a known current clamp for Channel A and apply its turns ratio and PGA gain.
Definition: sfDevADE7953.cpp:370
static const uint16_t kRegAccMode
Accumulation mode.
Definition: sfDevADE7953.h:729
sfTkError_t setInterruptEnableA(sfe_ade7953_irq_reg_t mask)
Set the interrupt enable mask for Channel A (and voltage).
Definition: sfDevADE7953.cpp:634
sfTkError_t setInterruptEnableB(sfe_ade7953_irq_reg_t mask)
Set the interrupt enable mask for Channel B.
Definition: sfDevADE7953.cpp:655
static const uint16_t kRegIrqEnB
Interrupt enable (Channel B)
Definition: sfDevADE7953.h:762
sfTkError_t getIRMSA(uint32_t &value)
Read the raw IRMS value for Current Channel A.
Definition: sfDevADE7953.cpp:250
static const uint16_t kRegAIGain
Current channel gain (Channel A)
Definition: sfDevADE7953.h:766
static const uint16_t kRegCFMode
CF output selection.
Definition: sfDevADE7953.h:714
static const uint16_t kRegBVarGain
Reactive power gain (Channel B)
Definition: sfDevADE7953.h:778
static const uint16_t kRegAVarGain
Reactive power gain (Channel A)
Definition: sfDevADE7953.h:769
sfTkError_t setLineCycleMode(sfe_ade7953_lcycmode_reg_t mode)
Set the line cycle accumulation mode register.
Definition: sfDevADE7953.cpp:689
sfTkError_t setGainIA(sfe_ade7953_pga_gain_t gain)
Set the PGA gain for Current Channel A.
Definition: sfDevADE7953.cpp:145
static const uint16_t kRegREnergyA
Reactive energy (Channel A)
Definition: sfDevADE7953.h:747
sfTkError_t getIRMSOffsetB(int32_t &offset)
Get the IRMS offset for Current Channel B.
Definition: sfDevADE7953.cpp:544
sfTkError_t getGainIA(sfe_ade7953_pga_gain_t &gain)
Get the PGA gain for Current Channel A.
Definition: sfDevADE7953.cpp:150
float getCurrentTransformerRatioA(void)
Get the configured CT turns ratio for Channel A.
Definition: sfDevADE7953.cpp:471
sfTkError_t getGainV(sfe_ade7953_pga_gain_t &gain)
Get the PGA gain for the voltage channel.
Definition: sfDevADE7953.cpp:180
sfTkError_t begin(sfTkIBus *theBus=nullptr)
Initialize the device driver with the given bus.
Definition: sfDevADE7953.cpp:26
void setBurdenResistor(float ohms)
Set the burden resistor value (in ohms) used by getCurrentA() / getCurrentB().
Definition: sfDevADE7953.cpp:481
sfTkError_t getLineCycleMode(sfe_ade7953_lcycmode_reg_t &mode)
Get the line cycle accumulation mode register.
Definition: sfDevADE7953.cpp:694
static const uint16_t kRegIA
Instantaneous current (Channel A)
Definition: sfDevADE7953.h:739
static const uint32_t kDigitalGainUnity
Digital gain register value for 1.0x.
Definition: sfDevADE7953.h:789
void setCurrentTransformerRatioA(float ratio)
Set the CT turns ratio used by getCurrentA() for Channel A.
Definition: sfDevADE7953.cpp:456
sfTkError_t setSagLevel(uint32_t level)
Set the sag voltage level threshold.
Definition: sfDevADE7953.cpp:721
static const uint16_t kRegV
Instantaneous voltage.
Definition: sfDevADE7953.h:741
sfTkError_t getLastData8(uint8_t &data)
Get the data from the last successful 8-bit register communication.
Definition: sfDevADE7953.cpp:743
sfTkError_t setGainIB(sfe_ade7953_pga_gain_t gain)
Set the PGA gain for Current Channel B.
Definition: sfDevADE7953.cpp:158
static const uint16_t kRegIrqStatA
Interrupt status (Channel A + voltage)
Definition: sfDevADE7953.h:760
sfTkError_t setCurrentClamp(sfe_ade7953_clamp_t clamp)
Select a known current clamp and apply its turns ratio and PGA gain to both channels.
Definition: sfDevADE7953.cpp:354
sfTkError_t getZXEdge(sfe_ade7953_zx_edge_t &edge)
Get the current zero-crossing edge selection.
Definition: sfDevADE7953.cpp:586
static const uint16_t kRegUnlock
Register unlock (write key to unlock 0x120)
Definition: sfDevADE7953.h:706
static const uint16_t kRegLineCyc
Half line cycles for line cycle accumulation.
Definition: sfDevADE7953.h:710
static const uint16_t kRegApNoLoad
Active power no-load level.
Definition: sfDevADE7953.h:730
uint32_t _baselineB
Channel B no-load IRMS baseline (raw counts).
Definition: sfDevADE7953.h:687
sfTkError_t getNoLoadDisable(sfe_ade7953_disnoload_reg_t &mask)
Get the no-load detection disable register.
Definition: sfDevADE7953.cpp:682
bool isConnected(void)
Check whether the ADE7953 is connected and responding.
Definition: sfDevADE7953.cpp:75
float getBurdenResistor(void)
Get the configured burden resistor value.
Definition: sfDevADE7953.cpp:486
static const uint16_t kRegVPeak
Voltage channel peak.
Definition: sfDevADE7953.h:753
uint32_t _baselineA
Channel A no-load IRMS baseline (raw counts).
Definition: sfDevADE7953.h:686
sfTkError_t getCurrentA(float &s)
Read the RMS current on Channel A converted to amps.
Definition: sfDevADE7953.cpp:260
static const uint16_t kRegIrqStatB
Interrupt status (Channel B)
Definition: sfDevADE7953.h:763
sfDevADE7953()
Definition: sfDevADE7953.h:181
static const uint16_t kRegVersion
Silicon version number.
Definition: sfDevADE7953.h:704
sfTkError_t setZXEdge(sfe_ade7953_zx_edge_t edge)
Set the zero-crossing edge selection for interrupt generation.
Definition: sfDevADE7953.cpp:574
sfTkError_t getPeakIB(uint32_t &value)
Read the peak current value for Channel B.
Definition: sfDevADE7953.cpp:498
sfTkIBus * _theBus
Pointer to the communication bus device.
Definition: sfDevADE7953.h:676
static const uint16_t kRegVaNoLoad
Apparent power no-load level.
Definition: sfDevADE7953.h:732
static const uint16_t kRegPFB
Power factor (Channel B)
Definition: sfDevADE7953.h:718
static const uint16_t kRegExRef
Reference input config (0=internal, 1=external)
Definition: sfDevADE7953.h:705
static const uint16_t kRegLastRwData8
Last successful 8-bit register data.
Definition: sfDevADE7953.h:703
static const uint8_t kLastOpRead
Last operation was a read.
Definition: sfDevADE7953.h:791
static const uint16_t kRegAVGain
Voltage channel gain.
Definition: sfDevADE7953.h:767
sfTkError_t getPeakIA(uint32_t &value)
Read the peak current value for Channel A.
Definition: sfDevADE7953.cpp:493
float _ctRatioB
Channel B CT turns ratio (30A:15mA = 2000:1).
Definition: sfDevADE7953.h:680
sfTkError_t getInstantaneousIA(int32_t &value)
Read the instantaneous current sample for Channel A.
Definition: sfDevADE7953.cpp:303
static const uint16_t kRegOvLvl
Overvoltage level.
Definition: sfDevADE7953.h:751
sfTkError_t readAndResetPeakIB(uint32_t &value)
Read the peak current value for Channel B and clear it.
Definition: sfDevADE7953.cpp:509
sfTkError_t getWriteProtect(uint8_t &protect)
Get the current write protection setting.
Definition: sfDevADE7953.cpp:115
static const uint16_t kRegAngleA
Angle between voltage and Current Channel A.
Definition: sfDevADE7953.h:719
static const uint16_t kRegAVarOS
Reactive power offset (Channel A)
Definition: sfDevADE7953.h:774
static const uint16_t kRegPhCalB
Phase calibration (Channel B)
Definition: sfDevADE7953.h:716
static const uint16_t kRegCF2Den
CF2 frequency divider denominator.
Definition: sfDevADE7953.h:713
sfTkError_t getInterruptStatusA(sfe_ade7953_irq_reg_t &status)
Read the interrupt status for Channel A (non-destructive).
Definition: sfDevADE7953.cpp:644
static const uint16_t kRegAngleB
Angle between voltage and Current Channel B.
Definition: sfDevADE7953.h:720
sfTkError_t isHPFEnabled(bool &enabled)
Check whether the high-pass filter is currently enabled.
Definition: sfDevADE7953.cpp:619
static const uint16_t kRegVarNoLoad
Reactive power no-load level.
Definition: sfDevADE7953.h:731
static const uint32_t kDigitalGainMax
Maximum valid digital gain register value.
Definition: sfDevADE7953.h:790
static const uint16_t kRegBVaOS
Apparent power offset (Channel B)
Definition: sfDevADE7953.h:783
sfTkError_t getSagLevel(uint32_t &level)
Get the sag voltage level threshold.
Definition: sfDevADE7953.cpp:726
sfTkError_t getZXISourceChannel(bool &useChannelB)
Get which current channel drives the ZX_I output.
Definition: sfDevADE7953.cpp:566
static const uint16_t kRegDisNoLoad
No-load detection disable.
Definition: sfDevADE7953.h:696
static const uint16_t kRegOptimize
Performance optimization (set to 0x0030)
Definition: sfDevADE7953.h:723
sfTkError_t setOvercurrentLevel(uint32_t level)
Set the overcurrent detection threshold.
Definition: sfDevADE7953.cpp:514
static const uint8_t kUnlockKey
Key written to kRegUnlock to unlock 0x120.
Definition: sfDevADE7953.h:787
static const uint16_t kRegBVA
Instantaneous apparent power (Channel B)
Definition: sfDevADE7953.h:734
sfTkError_t setSagCycles(uint8_t cycles)
Set the number of sag line cycles.
Definition: sfDevADE7953.cpp:711
static const uint16_t kRegRstIAPeak
Current Channel A peak read with reset.
Definition: sfDevADE7953.h:756
static const uint16_t kRegIrqEnA
Interrupt enable (Channel A + voltage)
Definition: sfDevADE7953.h:759
float _fullScaleVRMS
Full-scale input RMS voltage (0.5 V peak / sqrt(2)).
Definition: sfDevADE7953.h:683
static const uint16_t kRegVRMSOS
VRMS offset.
Definition: sfDevADE7953.h:772
static const uint16_t kRegRstVPeak
Voltage peak read with reset.
Definition: sfDevADE7953.h:754
sfTkError_t getLastOperation(uint8_t &op)
Get the type of the last successful communication.
Definition: sfDevADE7953.cpp:733
sfTkError_t readAndResetPeakIA(uint32_t &value)
Read the peak current value for Channel A and clear it.
Definition: sfDevADE7953.cpp:503
sfTkError_t getCurrentB(float &s)
Read the RMS current on Channel B converted to amps.
Definition: sfDevADE7953.cpp:284
sfTkError_t setGainV(sfe_ade7953_pga_gain_t gain)
Set the PGA gain for the voltage channel.
Definition: sfDevADE7953.cpp:171
static const uint16_t kRegAVaOS
Apparent power offset (Channel A)
Definition: sfDevADE7953.h:775
sfTkError_t getInterruptStatusB(sfe_ade7953_irq_reg_t &status)
Read the interrupt status for Channel B (non-destructive).
Definition: sfDevADE7953.cpp:665
sfTkError_t getDigitalGainIA(uint32_t &gain)
Get the digital gain for Current Channel A as a raw register value.
Definition: sfDevADE7953.cpp:205
sfTkError_t getOvercurrentLevel(uint32_t &level)
Get the overcurrent detection threshold.
Definition: sfDevADE7953.cpp:519
static const uint16_t kRegBWGain
Active power gain (Channel B)
Definition: sfDevADE7953.h:777
static const uint16_t kRegPFA
Power factor (Channel A)
Definition: sfDevADE7953.h:717
sfTkError_t applyDefaultConfig(void)
Apply the datasheet unlock + optimize sequence and default configuration.
Definition: sfDevADE7953.cpp:48
static float pgaGainToMultiplier(sfe_ade7953_pga_gain_t gain)
Convert a PGA gain enum value to its numeric multiplier (1, 2, 4, 8, 16, 22).
Definition: sfDevADE7953.cpp:124
sfTkError_t setCurrentClampB(sfe_ade7953_clamp_t clamp)
Select a known current clamp for Channel B and apply its turns ratio and PGA gain.
Definition: sfDevADE7953.cpp:380
static const uint16_t kRegPgaV
Voltage channel PGA gain (Bits[2:0])
Definition: sfDevADE7953.h:698
static void clampPreset(sfe_ade7953_clamp_t clamp, float &ratio, sfe_ade7953_pga_gain_t &gain)
Look up the turns ratio and PGA gain for a known current clamp preset.
Definition: sfDevADE7953.cpp:337
sfTkError_t autoCalibrateA(uint16_t numSamples=50)
Auto-calibrate the Channel A no-load baseline by averaging samples.
Definition: sfDevADE7953.cpp:406
static const uint16_t kRegIRMSA
IRMS (Channel A)
Definition: sfDevADE7953.h:742
static const uint16_t kRegBIRMSOS
IRMS offset (Channel B)
Definition: sfDevADE7953.h:780
void clearCalibration(void)
Clear the software no-load baseline for both channels (set by autoCalibrate).
Definition: sfDevADE7953.cpp:444
static const uint16_t kRegZXTout
Zero-crossing timeout.
Definition: sfDevADE7953.h:709
sfTkError_t setDigitalGainIA(uint32_t gain)
Set the digital (fine) gain for Current Channel A using a raw register value.
Definition: sfDevADE7953.cpp:188
void setCurrentTransformerRatioB(float ratio)
Set the CT turns ratio used by getCurrentB() for Channel B.
Definition: sfDevADE7953.cpp:461
static const uint16_t kRegBVar
Instantaneous reactive power (Channel B)
Definition: sfDevADE7953.h:738
static const uint16_t kRegCRC
Checksum (32-bit only)
Definition: sfDevADE7953.h:765
static const uint16_t kRegPgaIA
Current Channel A PGA gain (Bits[2:0])
Definition: sfDevADE7953.h:699
float getCurrentTransformerRatioB(void)
Get the configured CT turns ratio for Channel B.
Definition: sfDevADE7953.cpp:476
sfTkError_t setWriteProtect(uint8_t protect)
Set write protection bits.
Definition: sfDevADE7953.cpp:110
sfTkError_t setDigitalGainIB(uint32_t gain)
Set the digital (fine) gain for Current Channel B using a raw register value.
Definition: sfDevADE7953.cpp:218
static const uint16_t kRegAWatt
Instantaneous active power (Channel A)
Definition: sfDevADE7953.h:735
static const uint16_t kRegPhCalA
Phase calibration (Channel A)
Definition: sfDevADE7953.h:715
static const uint16_t kRegRstIBPeak
Current Channel B peak read with reset.
Definition: sfDevADE7953.h:758
static const uint16_t kRegIRMSB
IRMS (Channel B)
Definition: sfDevADE7953.h:743
static const uint16_t kRegREnergyB
Reactive energy (Channel B)
Definition: sfDevADE7953.h:748
sfTkError_t getIRMSOffsetA(int32_t &offset)
Get the IRMS offset for Current Channel A.
Definition: sfDevADE7953.cpp:531
float _fullScaleCode
ADE7953 full-scale IRMS code.
Definition: sfDevADE7953.h:682
static const uint16_t kRegOiLvl
Overcurrent level.
Definition: sfDevADE7953.h:752
float getCurrentTransformerRatio(void)
Get the configured CT turns ratio for Channel A.
Definition: sfDevADE7953.cpp:466
static const uint16_t kRegBVarOS
Reactive power offset (Channel B)
Definition: sfDevADE7953.h:782
sfTkError_t getGainIB(sfe_ade7953_pga_gain_t &gain)
Get the PGA gain for Current Channel B.
Definition: sfDevADE7953.cpp:163
static const uint16_t kRegAltOutput
Alternative output functions.
Definition: sfDevADE7953.h:722
static const uint16_t kRegPeriod
Period register (line period from ZX)
Definition: sfDevADE7953.h:721
static const uint16_t kRegVRMS
VRMS.
Definition: sfDevADE7953.h:744
static const uint16_t kRegApEnergyB
Apparent energy (Channel B)
Definition: sfDevADE7953.h:750
static const uint16_t kRegApEnergyA
Apparent energy (Channel A)
Definition: sfDevADE7953.h:749
static const uint16_t kRegBWatt
Instantaneous active power (Channel B)
Definition: sfDevADE7953.h:736
static const uint16_t kRegAVaGain
Apparent power gain (Channel A)
Definition: sfDevADE7953.h:770
static const uint16_t kRegCF1Den
CF1 frequency divider denominator.
Definition: sfDevADE7953.h:712
static const uint16_t kRegConfig
Configuration register.
Definition: sfDevADE7953.h:711
sfTkError_t setNoLoadDisable(sfe_ade7953_disnoload_reg_t mask)
Set the no-load detection disable register.
Definition: sfDevADE7953.cpp:677
sfTkError_t getLineCycleCount(uint16_t &halfCycles)
Get the number of half line cycles for line cycle accumulation.
Definition: sfDevADE7953.cpp:704
static const uint16_t kRegLastRwData16
Last successful 16-bit register data.
Definition: sfDevADE7953.h:725
static const uint16_t kRegBWattOS
Active power offset (Channel B)
Definition: sfDevADE7953.h:781
sfTkError_t enableZXLPF(bool enable)
Enable or disable the zero-crossing low-pass filter.
Definition: sfDevADE7953.cpp:594
static const uint16_t kRegSagLvl
Sag voltage level.
Definition: sfDevADE7953.h:728
sfTkError_t getInterruptEnableA(sfe_ade7953_irq_reg_t &mask)
Get the interrupt enable mask for Channel A.
Definition: sfDevADE7953.cpp:639
sfTkError_t getLastData16(uint16_t &data)
Get the data from the last successful 16-bit register communication.
Definition: sfDevADE7953.cpp:748
static const uint16_t kRegPgaIB
Current Channel B PGA gain (Bits[2:0])
Definition: sfDevADE7953.h:700
sfTkError_t setLineCycleCount(uint16_t halfCycles)
Set the number of half line cycles for line cycle accumulation.
Definition: sfDevADE7953.cpp:699
sfTkError_t autoCalibrateB(uint16_t numSamples=50)
Auto-calibrate the Channel B no-load baseline by averaging samples.
Definition: sfDevADE7953.cpp:425
static const uint16_t kRegAWattOS
Active power offset (Channel A)
Definition: sfDevADE7953.h:773
sfTkError_t setIRMSOffsetA(int32_t offset)
Set the IRMS offset for Current Channel A.
Definition: sfDevADE7953.cpp:526
sfTkError_t getPeriod(uint16_t &period)
Read the line period derived from zero-crossing detection.
Definition: sfDevADE7953.cpp:627
static const uint16_t kRegLCycMode
Line cycle accumulation mode config.
Definition: sfDevADE7953.h:697
static float removeBaseline(uint32_t reading, uint32_t baseline)
Remove a no-load baseline from a raw RMS reading in the squared domain.
Definition: sfDevADE7953.cpp:324
sfTkError_t getLastAddress(uint16_t &address)
Get the address of the last successful communication.
Definition: sfDevADE7953.cpp:738
void setCurrentTransformerRatio(float ratio)
Set the CT (current transformer) turns ratio used by getCurrentA() and getCurrentB().
Definition: sfDevADE7953.cpp:450
static const uint16_t kRegLastOp
Last operation type (0x35=read, 0xCA=write)
Definition: sfDevADE7953.h:702
static const uint16_t kRegAVA
Instantaneous apparent power (Channel A)
Definition: sfDevADE7953.h:733
static const uint16_t kRegAEnergyA
Active energy (Channel A)
Definition: sfDevADE7953.h:745
static const uint16_t kRegSagCyc
Sag line cycles.
Definition: sfDevADE7953.h:695
static const uint16_t kRegLastRwData32
Last successful 24/32-bit register data.
Definition: sfDevADE7953.h:784
static const uint16_t kRegRstIrqStatA
Reset interrupt status (Channel A + voltage)
Definition: sfDevADE7953.h:761
static const uint16_t kRegWriteProtect
Write protection bits (Bits[2:0])
Definition: sfDevADE7953.h:701
static const uint8_t kLastOpWrite
Last operation was a write.
Definition: sfDevADE7953.h:792
sfTkError_t readAndResetInterruptStatusA(sfe_ade7953_irq_reg_t &status)
Read the interrupt status for Channel A and clear it.
Definition: sfDevADE7953.cpp:649
sfTkError_t readAndResetInterruptStatusB(sfe_ade7953_irq_reg_t &status)
Read the interrupt status for Channel B and clear it.
Definition: sfDevADE7953.cpp:670
sfTkError_t reset(void)
Perform a software reset and re-apply the datasheet performance configuration.
Definition: sfDevADE7953.cpp:90
static const uint16_t kRegIAPeak
Current Channel A peak.
Definition: sfDevADE7953.h:755
static const uint8_t kI2CAddress
7-bit I2C address for the ADE7953 (only address).
Definition: sfDevADE7953.h:692
static const uint16_t kRegIB
Instantaneous current (Channel B)
Definition: sfDevADE7953.h:740
static const uint16_t kRegRstIrqStatB
Reset interrupt status (Channel B)
Definition: sfDevADE7953.h:764
static const uint16_t kRegBVaGain
Apparent power gain (Channel B)
Definition: sfDevADE7953.h:779
static const uint16_t kRegAWGain
Active power gain (Channel A)
Definition: sfDevADE7953.h:768
float _ctRatioA
Channel A CT turns ratio (30A:15mA = 2000:1).
Definition: sfDevADE7953.h:679
sfTkError_t getLastData32(uint32_t &data)
Get the data from the last successful 24/32-bit register communication.
Definition: sfDevADE7953.cpp:753
float _burdenResistor
Burden resistor in ohms.
Definition: sfDevADE7953.h:681
sfTkError_t setZXISourceChannel(bool useChannelB)
Select which current channel drives the ZX_I output.
Definition: sfDevADE7953.cpp:554
static const uint16_t kRegAVar
Instantaneous reactive power (Channel A)
Definition: sfDevADE7953.h:737
sfTkError_t getSagCycles(uint8_t &cycles)
Get the number of sag line cycles.
Definition: sfDevADE7953.cpp:716
sfTkError_t getDigitalGainIB(uint32_t &gain)
Get the digital gain for Current Channel B as a raw register value.
Definition: sfDevADE7953.cpp:235
sfTkError_t getInterruptEnableB(sfe_ade7953_irq_reg_t &mask)
Get the interrupt enable mask for Channel B.
Definition: sfDevADE7953.cpp:660
sfTkError_t getVersion(uint8_t &version)
Read the silicon version number from the Version register (0x702).
Definition: sfDevADE7953.cpp:85
sfTkError_t enableHPF(bool enable)
Enable or disable the high-pass filter on all channels.
Definition: sfDevADE7953.cpp:607
static const uint16_t kRegIBPeak
Current Channel B peak.
Definition: sfDevADE7953.h:757
static const uint16_t kOptimizeValue
Value written to 0x120 for rated performance.
Definition: sfDevADE7953.h:788
sfTkError_t setIRMSOffsetB(int32_t offset)
Set the IRMS offset for Current Channel B.
Definition: sfDevADE7953.cpp:539
static const uint16_t kRegLastAdd
Last successful communication address.
Definition: sfDevADE7953.h:724
static const uint16_t kRegAEnergyB
Active energy (Channel B)
Definition: sfDevADE7953.h:746
static const uint16_t kRegBIGain
Current channel gain (Channel B)
Definition: sfDevADE7953.h:776
static const uint16_t kRegAIRMSOS
IRMS offset (Channel A)
Definition: sfDevADE7953.h:771
sfTkError_t getInstantaneousIB(int32_t &value)
Read the instantaneous current sample for Channel B.
Definition: sfDevADE7953.cpp:314
sfe_ade7953_clamp_t
Supported clamp-on current transformers.
Definition: sfDevADE7953.h:64
@ ADE7953_CLAMP_SCT013
SCT-013-000: 100A:50mA (2000:1 turns), 1x PGA gain.
Definition: sfDevADE7953.h:66
@ ADE7953_CLAMP_ECS1030
SparkFun ECS1030-L72: 30A:15mA (2000:1 turns), 4x PGA gain.
Definition: sfDevADE7953.h:65
sfe_ade7953_pga_gain_t
PGA gain settings for the PGA_V, PGA_IA, and PGA_IB registers.
Definition: sfDevADE7953.h:35
@ ADE7953_PGA_GAIN_8
8x gain
Definition: sfDevADE7953.h:39
@ ADE7953_PGA_GAIN_22
22x gain (current channels only; not valid for the voltage channel)
Definition: sfDevADE7953.h:41
@ ADE7953_PGA_GAIN_2
2x gain
Definition: sfDevADE7953.h:37
@ ADE7953_PGA_GAIN_4
4x gain
Definition: sfDevADE7953.h:38
@ ADE7953_PGA_GAIN_1
1x gain
Definition: sfDevADE7953.h:36
@ ADE7953_PGA_GAIN_16
16x gain
Definition: sfDevADE7953.h:40
sfe_ade7953_zx_edge_t
Zero-crossing edge selection for CONFIG register bits [13:12].
Definition: sfDevADE7953.h:49
@ ADE7953_ZX_EDGE_BOTH_ALT
Same as BOTH (alternate encoding)
Definition: sfDevADE7953.h:53
@ ADE7953_ZX_EDGE_POSITIVE
Interrupt on positive-going ZX only.
Definition: sfDevADE7953.h:52
@ ADE7953_ZX_EDGE_BOTH
Interrupt on both positive and negative-going ZX.
Definition: sfDevADE7953.h:50
@ ADE7953_ZX_EDGE_NEGATIVE
Interrupt on negative-going ZX only.
Definition: sfDevADE7953.h:51
Bitfield union for the 16-bit CONFIG register (0x102).
Definition: sfDevADE7953.h:74
uint16_t zxLPF
ZX LPF disable (1=disabled) [bit 6].
Definition: sfDevADE7953.h:83
uint16_t intEnA
Integrator enable (Channel A) [bit 0].
Definition: sfDevADE7953.h:77
uint16_t zxEdge
ZX edge selection (see sfe_ade7953_zx_edge_t) [bits 13:12].
Definition: sfDevADE7953.h:88
uint16_t hpfEn
HPF enable (all channels) [bit 2].
Definition: sfDevADE7953.h:79
uint16_t swRst
Software reset [bit 7].
Definition: sfDevADE7953.h:84
uint16_t intEnB
Integrator enable (Channel B) [bit 1].
Definition: sfDevADE7953.h:78
uint16_t word
Raw register value for I2C read/write.
Definition: sfDevADE7953.h:92
uint16_t revpPulse
REVP output mode [bit 5].
Definition: sfDevADE7953.h:82
uint16_t zxI
ZX_I source: 0=Channel A, 1=Channel B [bit 11].
Definition: sfDevADE7953.h:87
uint16_t pfMode
Power factor mode [bit 3].
Definition: sfDevADE7953.h:80
uint16_t revpCF
REVP updated on CF1(0) or CF2(1) [bit 4].
Definition: sfDevADE7953.h:81
uint16_t commLock
Communication locking (1=disabled) [bit 15].
Definition: sfDevADE7953.h:90
uint16_t crcEn
CRC enable [bit 8].
Definition: sfDevADE7953.h:85
Bitfield union for the 8-bit DISNOLOAD register (0x001).
Definition: sfDevADE7953.h:120
uint8_t disVA
Disable apparent power no-load detection [bit 2].
Definition: sfDevADE7953.h:125
uint8_t disVAR
Disable reactive power no-load detection [bit 1].
Definition: sfDevADE7953.h:124
uint8_t disAP
Disable active power no-load detection [bit 0].
Definition: sfDevADE7953.h:123
uint8_t byte
Raw register value for I2C read/write.
Definition: sfDevADE7953.h:128
Bitfield union for the 32-bit IRQ enable and status registers.
Definition: sfDevADE7953.h:138
uint32_t cycEnd
End of line cycle accumulation period (Channel A only) [bit 18].
Definition: sfDevADE7953.h:159
uint32_t varehf
Reactive energy half full [bit 1].
Definition: sfDevADE7953.h:142
uint32_t reset
Reset occurred — always enabled (Channel A only) [bit 20].
Definition: sfDevADE7953.h:161
uint32_t zxV
Voltage zero-crossing detected (Channel A only) [bit 15].
Definition: sfDevADE7953.h:156
uint32_t apNoLoad
Active power no-load detected [bit 6].
Definition: sfDevADE7953.h:147
uint32_t zxI
Current zero-crossing detected [bit 12].
Definition: sfDevADE7953.h:153
uint32_t apSign
Active energy sign changed [bit 9].
Definition: sfDevADE7953.h:150
uint32_t aehf
Active energy half full [bit 0].
Definition: sfDevADE7953.h:141
uint32_t varNoLoad
Reactive power no-load detected [bit 7].
Definition: sfDevADE7953.h:148
uint32_t zxToV
Voltage zero-crossing timeout (Channel A only) [bit 14].
Definition: sfDevADE7953.h:155
uint32_t vareof
Reactive energy overflow/underflow [bit 4].
Definition: sfDevADE7953.h:145
uint32_t oV
Overvoltage threshold exceeded (Channel A only) [bit 16].
Definition: sfDevADE7953.h:157
uint32_t crc
Checksum changed (Channel A only) [bit 21].
Definition: sfDevADE7953.h:162
uint32_t sag
Sag event occurred (Channel A only) [bit 19].
Definition: sfDevADE7953.h:160
uint32_t oI
Overcurrent threshold exceeded [bit 13].
Definition: sfDevADE7953.h:154
uint32_t vaeof
Apparent energy overflow/underflow [bit 5].
Definition: sfDevADE7953.h:146
uint32_t wSmp
New waveform data acquired (Channel A only) [bit 17].
Definition: sfDevADE7953.h:158
uint32_t vaNoLoad
Apparent power no-load detected [bit 8].
Definition: sfDevADE7953.h:149
uint32_t vaehf
Apparent energy half full [bit 2].
Definition: sfDevADE7953.h:143
uint32_t varSign
Reactive energy sign changed [bit 10].
Definition: sfDevADE7953.h:151
uint32_t word
Raw register value for I2C read/write.
Definition: sfDevADE7953.h:165
uint32_t zxToI
Current zero-crossing timeout [bit 11].
Definition: sfDevADE7953.h:152
uint32_t aeof
Active energy overflow/underflow [bit 3].
Definition: sfDevADE7953.h:144
Bitfield union for the 8-bit LCYCMODE register (0x004).
Definition: sfDevADE7953.h:100
uint8_t aLVar
Reactive energy line cycle mode (Channel A) [bit 2].
Definition: sfDevADE7953.h:105
uint8_t bLVa
Apparent energy line cycle mode (Channel B) [bit 5].
Definition: sfDevADE7953.h:108
uint8_t rstRead
Read-with-reset enable for all registers [bit 6].
Definition: sfDevADE7953.h:109
uint8_t aLVa
Apparent energy line cycle mode (Channel A) [bit 4].
Definition: sfDevADE7953.h:107
uint8_t aLWatt
Active energy line cycle mode (Channel A) [bit 0].
Definition: sfDevADE7953.h:103
uint8_t bLVar
Reactive energy line cycle mode (Channel B) [bit 3].
Definition: sfDevADE7953.h:106
uint8_t byte
Raw register value for I2C read/write.
Definition: sfDevADE7953.h:112
uint8_t bLWatt
Active energy line cycle mode (Channel B) [bit 1].
Definition: sfDevADE7953.h:104