Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled diff
Created
7 years ago
Diff never expires
Clear
Export
Share
Explain
34 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
105 lines
Copy
125 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
196 lines
Copy
#include <Arduino.h>
#include <Arduino.h>
// original example code
// original example code
#include <SPI.h>
#include <SPI.h>
#include <ADE9000RegMap.h>
#include <ADE9000RegMap.h>
#include <ADE9000API.h>
#include <ADE9000API.h>
/*Basic initializations*/
/*Basic initializations*/
ADE9000Class ade9000;
ADE9000Class ade9000;
#define SPI_SPEED 5000000 //SPI Speed
#define SPI_SPEED 5000000 //SPI Speed
Copy
Copied
Copy
Copied
#define CS_PIN
8
//
8-->Arduino Zero. 16-->ESP8266
#define CS_PIN
A2
//
nucleo f411 boaard
#define ADE9000_RESET_PIN 5 //Reset Pin on HW
#define ADE9000_RESET_PIN 5 //Reset Pin on HW
#define PM_1 4 //PM1 Pin: 4-->Arduino Zero. 15-->ESP8266
#define PM_1 4 //PM1 Pin: 4-->Arduino Zero. 15-->ESP8266
/*Structure decleration */
/*Structure decleration */
struct ActivePowerRegs powerRegs; // Declare powerRegs of type ActivePowerRegs to store Active Power Register data
struct ActivePowerRegs powerRegs; // Declare powerRegs of type ActivePowerRegs to store Active Power Register data
struct CurrentRMSRegs curntRMSRegs; //Current RMS
struct CurrentRMSRegs curntRMSRegs; //Current RMS
struct VoltageRMSRegs vltgRMSRegs; //Voltage RMS
struct VoltageRMSRegs vltgRMSRegs; //Voltage RMS
struct VoltageTHDRegs voltageTHDRegsnValues; //Voltage THD
struct VoltageTHDRegs voltageTHDRegsnValues; //Voltage THD
struct ResampledWfbData resampledData; // Resampled Data
struct ResampledWfbData resampledData; // Resampled Data
/*Function Decleration*/
/*Function Decleration*/
void readRegisterData(void);
void readRegisterData(void);
void readResampledData(void);
void readResampledData(void);
void resetADE9000(void);
void resetADE9000(void);
Copy
Copied
Copy
Copied
void SetupADE9000New(void) {
ade9000.SPI_Write_16(ADDR_PGA_GAIN,0);
ade9000.SPI_Write_32(ADDR_CONFIG0,0);
ade9000.SPI_Write_16(ADDR_CONFIG1,0);
ade9000.SPI_Write_16(ADDR_CONFIG2,0);
ade9000.SPI_Write_16(ADDR_CONFIG3,0);
ade9000.SPI_Write_16(ADDR_ACCMODE,0);
ade9000.SPI_Write_16(ADDR_TEMP_CFG,0);
ade9000.SPI_Write_16(ADDR_ZX_LP_SEL,0);
ade9000.SPI_Write_32(ADDR_MASK0,0);
ade9000.SPI_Write_32(ADDR_MASK1,0);
ade9000.SPI_Write_32(ADDR_EVENT_MASK,0);
ade9000.SPI_Write_16(ADDR_WFB_CFG,0);
ade9000.SPI_Write_32(ADDR_VLEVEL,0);
ade9000.SPI_Write_32(ADDR_DICOEFF,0);
ade9000.SPI_Write_16(ADDR_EGY_TIME,0);
ade9000.SPI_Write_16(ADDR_EP_CFG,0);
ade9000.SPI_Write_16(ADDR_RUN,ADE9000_RUN_ON);
}
void setup()
void setup()
{
{
Serial.begin(115200);
Serial.begin(115200);
pinMode(PM_1, OUTPUT); //Set PM1 pin as output
pinMode(PM_1, OUTPUT); //Set PM1 pin as output
digitalWrite(PM_1, LOW); //Set PM1 select pin low for PSM0 mode
digitalWrite(PM_1, LOW); //Set PM1 select pin low for PSM0 mode
pinMode(ADE9000_RESET_PIN, OUTPUT);
pinMode(ADE9000_RESET_PIN, OUTPUT);
digitalWrite(ADE9000_RESET_PIN, HIGH);
digitalWrite(ADE9000_RESET_PIN, HIGH);
void resetADE9000();
void resetADE9000();
delay(1000);
delay(1000);
ade9000.SPI_Init(SPI_SPEED,CS_PIN); //Initialize SPI
ade9000.SPI_Init(SPI_SPEED,CS_PIN); //Initialize SPI
Copy
Copied
Copy
Copied
ade9000.SetupADE9000(); //Initialize ADE9000 registers according to values in ADE9000API.h
SetupADE9000New();
//
ade9000.SPI_Write_16(ADDR_
RUN,0x1); //Set RUN=1 to turn on DSP. Uncomment if SetupADE9000 function is not used
/* user code start */
// Identyfi ADE9000
Serial.print("ADE9000 id: ");
Serial.println(ade9000.SPI_Read_16(0x00000472), HEX);
// To set the waveform buffer, perform the following procedure:
// 1. Write 0x03F8 to WFB_CFB (Address 0x4A0) to configure the waveform.
uint16_t wfb_cfg_register = 0x03F8;
ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register);
// 2. Write 0'0b0 to WF_IN_EN (Bit 12) to disable waveform in
// neutral channel to be read through the serial peripheral
// interface (SPI).
bitClear(wfb_cfg_register, 12);
ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register);
// 3. Write 0'b11 to WF_SRC (Bits[9:8]) to enable current and
// voltage channel waveform samples processed at 8 kSPS by
// the DSP.
bitSet(wfb_cfg_register, 9);
bitSet(wfb_cfg_register, 8);
ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register);
// 4. Write 0'b11 to WF_MODE (Bits[7:6]) to enable continuous
// fill on the buffer. See the ADE9000 Technical Reference
// Manual for more information on continuous filling mode.
bitSet(wfb_cfg_register, 7);
bitSet(wfb_cfg_register, 6);
ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register);
// 5. Write 0'b1 to WF_CAP_SEL (Bit 5) to enable the fixed data
// rate sampling (noncoherent).
bitSet(wfb_cfg_register, 5);
ade9000.SPI_Write_16(ADDR_
WFB_CFG, wfb_cfg_register);
// 6. Write 0'b1 to WF_CAP_EN (Bit 4) to start waveform
// capturer.
bitSet(wfb_cfg_register, 4);
ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register);
Serial.println(wfb_cfg_register, HEX);
// 7. Write 0'b0000 for all channels to BURST_CHAN
// (Bits[3.0]) to select channels. See the ADE9000 data sheet
// for other channels.
bitClear(wfb_cfg_register, 3);
bitClear(wfb_cfg_register, 2);
bitClear(wfb_cfg_register, 1);
bitClear(wfb_cfg_register, 0);
ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register);
// To execute this process, take the following steps:
// 1. Write 0x20000 to MASK0 (Address 0x405) to enable the page full interrupt.
ade9000.SPI_Write_32(ADDR_MASK0, 0x20000);
// 2. Write 0x8080 to WFB_PG_IRQWN (Address 0x4A1) to set the interrupt at Page 7 and Page 15.
ade9000.SPI_Write_16(ADDR_WFB_PG_IRQEN, 0x8080);
Serial.print("RUN Register: ");
Serial.print("RUN Register: ");
Serial.println(ade9000.SPI_Read_16(ADDR_RUN),HEX);
Serial.println(ade9000.SPI_Read_16(ADDR_RUN),HEX);
}
}
void loop() {
void loop() {
Copy
Copied
Copy
Copied
readRegisterData();
//
readRegisterData();
readResampledData();
readResampledData();
Copy
Copied
Copy
Copied
delay(10000);
//
delay(10000);
}
}
void readRegisterData()
void readRegisterData()
{
{
/*Read and Print Specific Register using ADE9000 SPI Library */
/*Read and Print Specific Register using ADE9000 SPI Library */
Serial.print("AIRMS: ");
Serial.print("AIRMS: ");
Serial.println(ade9000.SPI_Read_32(ADDR_AIRMS),HEX); // AIRMS
Serial.println(ade9000.SPI_Read_32(ADDR_AIRMS),HEX); // AIRMS
/*Read and Print RMS & WATT Register using ADE9000 Read Library*/
/*Read and Print RMS & WATT Register using ADE9000 Read Library*/
ade9000.ReadVoltageRMSRegs(&vltgRMSRegs); //Template to read Power registers from ADE9000 and store data in Arduino MCU
ade9000.ReadVoltageRMSRegs(&vltgRMSRegs); //Template to read Power registers from ADE9000 and store data in Arduino MCU
ade9000.ReadActivePowerRegs(&powerRegs);
ade9000.ReadActivePowerRegs(&powerRegs);
Serial.print("AVRMS:");
Serial.print("AVRMS:");
Serial.println(vltgRMSRegs.VoltageRMSReg_A); //Print AVRMS register
Serial.println(vltgRMSRegs.VoltageRMSReg_A); //Print AVRMS register
Serial.print("AWATT:");
Serial.print("AWATT:");
Serial.println(powerRegs.ActivePowerReg_A); //Print AWATT register
Serial.println(powerRegs.ActivePowerReg_A); //Print AWATT register
}
}
void readResampledData()
void readResampledData()
{
{
Copy
Copied
Copy
Copied
uint32_t temp;
// CLEAR INTERRUPTS, WRITE 0x20000 TO STATUS0
/*Read and Print Resampled data*/
ade9000.SPI_Write_32(ADDR_STATUS0, 0x20000);
/*Start the Resampling engine to acquire 4 cycles of resampled data*/
ade9000.SPI_Write_16(ADDR_WFB_CFG,0x1000);
while(digitalRead(pinNametoDigitalPin(PA_0))) {
ade9000.SPI_Write_16(ADDR_WFB_CFG,0x1010);
;
delay(100); //approximate time to fill the waveform buffer with 4 line cycles
}
/*Read Resampled data into Arduino Memory*/
// POLL STATUS0, BIT 17 PAGE FULL
ade9000.SPI_Burst_Read_Resampled_Wfb(0x800,WFB_ELEMENT_ARRAY_SIZE,&resampledData); // Burst read function
uint32_t status0 = 0;
while(1) {
for(temp=0;temp<WFB_ELEMENT_ARRAY_SIZE;temp++)
status0 = ade9000.SPI_Read_32(ADDR_STATUS0);
{
// IS PAGE FULL INTERRUPT (BIT 17 IN STATUS0) TRUE?
Serial.print("VA: ");
if(bitRead(status0, 17) == true) {
Serial.println(resampledData.VA_Resampled[temp],HEX);
break;
Serial.print("IA: ");
}
Serial.println(resampledData.IA_Resampled[temp],HEX);
}
Serial.print("VB: ");
Serial.println(resampledData.VB_Resampled[temp],HEX);
uint16_t wfb_address = 0;
Serial.print("
IB:
");
Serial.println(
resampledData.IB_Resampled[temp],HEX
);
// READ ADDRESS 0x4A3 WFB_TRG_STAT
Serial.print
("VC: "
);
uint16_t wfb_trg_stat = ade9000.SPI_Read_16(ADDR_WFB_TRG_STAT) >> 12;
Serial.println(resampledData.VC_Resampled[temp],HEX);
Serial.print("IC: ");
// IS WFB_LAST_PAGE EQUAL TO 0xBFF?
Serial.println(resampledData.IC_Resampled[temp],HEX);
if(wfb_trg_stat == 7) {
Serial.print("IN: ");
// READ 0x400 SAMPLES FROM 0x800 TO 0xBFF (PAGE 0 TO PAGE 7)
Serial.println(resampledData.IN_Resampled[temp],HEX);
wfb_address = 0x800;
}
} else if (wfb_trg_stat == 15){
// READ 0x400 SAMPLES FROM 0xC00 TO 0xFFF (PAGE 8 TO PAGE 15)
wfb_address = 0xC00;
} else {
Serial.println("wfb_trg_stat != 7 && != 15.");
Serial.print("
wfb_trg_stat =
");
Serial.println(
wfb_trg_stat
);
}
Serial.print
ln(wfb_address, HEX
);
// curent version of SPI_Burst_Read_Resampled_Wfb reads 16 bit resampled
// data, so has to be reworked due to fixed sampling rate data stream.
// for now focusing on PAGE_FULL_IRQ timings
// ade9000.SPI_Burst_Read_Resampled_Wfb(wfb_address,128,&resampledData);
}
}
void resetADE9000(void)
void resetADE9000(void)
{
{
digitalWrite(ADE9000_RESET_PIN, LOW);
digitalWrite(ADE9000_RESET_PIN, LOW);
delay(50);
delay(50);
digitalWrite(ADE9000_RESET_PIN, HIGH);
digitalWrite(ADE9000_RESET_PIN, HIGH);
delay(1000);
delay(1000);
Serial.println("Reset Done");
Serial.println("Reset Done");
}
}
Saved diffs
Original text
Open file
#include <Arduino.h> // original example code #include <SPI.h> #include <ADE9000RegMap.h> #include <ADE9000API.h> /*Basic initializations*/ ADE9000Class ade9000; #define SPI_SPEED 5000000 //SPI Speed #define CS_PIN 8 //8-->Arduino Zero. 16-->ESP8266 #define ADE9000_RESET_PIN 5 //Reset Pin on HW #define PM_1 4 //PM1 Pin: 4-->Arduino Zero. 15-->ESP8266 /*Structure decleration */ struct ActivePowerRegs powerRegs; // Declare powerRegs of type ActivePowerRegs to store Active Power Register data struct CurrentRMSRegs curntRMSRegs; //Current RMS struct VoltageRMSRegs vltgRMSRegs; //Voltage RMS struct VoltageTHDRegs voltageTHDRegsnValues; //Voltage THD struct ResampledWfbData resampledData; // Resampled Data /*Function Decleration*/ void readRegisterData(void); void readResampledData(void); void resetADE9000(void); void setup() { Serial.begin(115200); pinMode(PM_1, OUTPUT); //Set PM1 pin as output digitalWrite(PM_1, LOW); //Set PM1 select pin low for PSM0 mode pinMode(ADE9000_RESET_PIN, OUTPUT); digitalWrite(ADE9000_RESET_PIN, HIGH); void resetADE9000(); delay(1000); ade9000.SPI_Init(SPI_SPEED,CS_PIN); //Initialize SPI ade9000.SetupADE9000(); //Initialize ADE9000 registers according to values in ADE9000API.h //ade9000.SPI_Write_16(ADDR_RUN,0x1); //Set RUN=1 to turn on DSP. Uncomment if SetupADE9000 function is not used Serial.print("RUN Register: "); Serial.println(ade9000.SPI_Read_16(ADDR_RUN),HEX); } void loop() { readRegisterData(); readResampledData(); delay(10000); } void readRegisterData() { /*Read and Print Specific Register using ADE9000 SPI Library */ Serial.print("AIRMS: "); Serial.println(ade9000.SPI_Read_32(ADDR_AIRMS),HEX); // AIRMS /*Read and Print RMS & WATT Register using ADE9000 Read Library*/ ade9000.ReadVoltageRMSRegs(&vltgRMSRegs); //Template to read Power registers from ADE9000 and store data in Arduino MCU ade9000.ReadActivePowerRegs(&powerRegs); Serial.print("AVRMS:"); Serial.println(vltgRMSRegs.VoltageRMSReg_A); //Print AVRMS register Serial.print("AWATT:"); Serial.println(powerRegs.ActivePowerReg_A); //Print AWATT register } void readResampledData() { uint32_t temp; /*Read and Print Resampled data*/ /*Start the Resampling engine to acquire 4 cycles of resampled data*/ ade9000.SPI_Write_16(ADDR_WFB_CFG,0x1000); ade9000.SPI_Write_16(ADDR_WFB_CFG,0x1010); delay(100); //approximate time to fill the waveform buffer with 4 line cycles /*Read Resampled data into Arduino Memory*/ ade9000.SPI_Burst_Read_Resampled_Wfb(0x800,WFB_ELEMENT_ARRAY_SIZE,&resampledData); // Burst read function for(temp=0;temp<WFB_ELEMENT_ARRAY_SIZE;temp++) { Serial.print("VA: "); Serial.println(resampledData.VA_Resampled[temp],HEX); Serial.print("IA: "); Serial.println(resampledData.IA_Resampled[temp],HEX); Serial.print("VB: "); Serial.println(resampledData.VB_Resampled[temp],HEX); Serial.print("IB: "); Serial.println(resampledData.IB_Resampled[temp],HEX); Serial.print("VC: "); Serial.println(resampledData.VC_Resampled[temp],HEX); Serial.print("IC: "); Serial.println(resampledData.IC_Resampled[temp],HEX); Serial.print("IN: "); Serial.println(resampledData.IN_Resampled[temp],HEX); } } void resetADE9000(void) { digitalWrite(ADE9000_RESET_PIN, LOW); delay(50); digitalWrite(ADE9000_RESET_PIN, HIGH); delay(1000); Serial.println("Reset Done"); }
Changed text
Open file
#include <Arduino.h> // original example code #include <SPI.h> #include <ADE9000RegMap.h> #include <ADE9000API.h> /*Basic initializations*/ ADE9000Class ade9000; #define SPI_SPEED 5000000 //SPI Speed #define CS_PIN A2 // nucleo f411 boaard #define ADE9000_RESET_PIN 5 //Reset Pin on HW #define PM_1 4 //PM1 Pin: 4-->Arduino Zero. 15-->ESP8266 /*Structure decleration */ struct ActivePowerRegs powerRegs; // Declare powerRegs of type ActivePowerRegs to store Active Power Register data struct CurrentRMSRegs curntRMSRegs; //Current RMS struct VoltageRMSRegs vltgRMSRegs; //Voltage RMS struct VoltageTHDRegs voltageTHDRegsnValues; //Voltage THD struct ResampledWfbData resampledData; // Resampled Data /*Function Decleration*/ void readRegisterData(void); void readResampledData(void); void resetADE9000(void); void SetupADE9000New(void) { ade9000.SPI_Write_16(ADDR_PGA_GAIN,0); ade9000.SPI_Write_32(ADDR_CONFIG0,0); ade9000.SPI_Write_16(ADDR_CONFIG1,0); ade9000.SPI_Write_16(ADDR_CONFIG2,0); ade9000.SPI_Write_16(ADDR_CONFIG3,0); ade9000.SPI_Write_16(ADDR_ACCMODE,0); ade9000.SPI_Write_16(ADDR_TEMP_CFG,0); ade9000.SPI_Write_16(ADDR_ZX_LP_SEL,0); ade9000.SPI_Write_32(ADDR_MASK0,0); ade9000.SPI_Write_32(ADDR_MASK1,0); ade9000.SPI_Write_32(ADDR_EVENT_MASK,0); ade9000.SPI_Write_16(ADDR_WFB_CFG,0); ade9000.SPI_Write_32(ADDR_VLEVEL,0); ade9000.SPI_Write_32(ADDR_DICOEFF,0); ade9000.SPI_Write_16(ADDR_EGY_TIME,0); ade9000.SPI_Write_16(ADDR_EP_CFG,0); ade9000.SPI_Write_16(ADDR_RUN,ADE9000_RUN_ON); } void setup() { Serial.begin(115200); pinMode(PM_1, OUTPUT); //Set PM1 pin as output digitalWrite(PM_1, LOW); //Set PM1 select pin low for PSM0 mode pinMode(ADE9000_RESET_PIN, OUTPUT); digitalWrite(ADE9000_RESET_PIN, HIGH); void resetADE9000(); delay(1000); ade9000.SPI_Init(SPI_SPEED,CS_PIN); //Initialize SPI SetupADE9000New(); /* user code start */ // Identyfi ADE9000 Serial.print("ADE9000 id: "); Serial.println(ade9000.SPI_Read_16(0x00000472), HEX); // To set the waveform buffer, perform the following procedure: // 1. Write 0x03F8 to WFB_CFB (Address 0x4A0) to configure the waveform. uint16_t wfb_cfg_register = 0x03F8; ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); // 2. Write 0'0b0 to WF_IN_EN (Bit 12) to disable waveform in // neutral channel to be read through the serial peripheral // interface (SPI). bitClear(wfb_cfg_register, 12); ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); // 3. Write 0'b11 to WF_SRC (Bits[9:8]) to enable current and // voltage channel waveform samples processed at 8 kSPS by // the DSP. bitSet(wfb_cfg_register, 9); bitSet(wfb_cfg_register, 8); ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); // 4. Write 0'b11 to WF_MODE (Bits[7:6]) to enable continuous // fill on the buffer. See the ADE9000 Technical Reference // Manual for more information on continuous filling mode. bitSet(wfb_cfg_register, 7); bitSet(wfb_cfg_register, 6); ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); // 5. Write 0'b1 to WF_CAP_SEL (Bit 5) to enable the fixed data // rate sampling (noncoherent). bitSet(wfb_cfg_register, 5); ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); // 6. Write 0'b1 to WF_CAP_EN (Bit 4) to start waveform // capturer. bitSet(wfb_cfg_register, 4); ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); Serial.println(wfb_cfg_register, HEX); // 7. Write 0'b0000 for all channels to BURST_CHAN // (Bits[3.0]) to select channels. See the ADE9000 data sheet // for other channels. bitClear(wfb_cfg_register, 3); bitClear(wfb_cfg_register, 2); bitClear(wfb_cfg_register, 1); bitClear(wfb_cfg_register, 0); ade9000.SPI_Write_16(ADDR_WFB_CFG, wfb_cfg_register); // To execute this process, take the following steps: // 1. Write 0x20000 to MASK0 (Address 0x405) to enable the page full interrupt. ade9000.SPI_Write_32(ADDR_MASK0, 0x20000); // 2. Write 0x8080 to WFB_PG_IRQWN (Address 0x4A1) to set the interrupt at Page 7 and Page 15. ade9000.SPI_Write_16(ADDR_WFB_PG_IRQEN, 0x8080); Serial.print("RUN Register: "); Serial.println(ade9000.SPI_Read_16(ADDR_RUN),HEX); } void loop() { // readRegisterData(); readResampledData(); // delay(10000); } void readRegisterData() { /*Read and Print Specific Register using ADE9000 SPI Library */ Serial.print("AIRMS: "); Serial.println(ade9000.SPI_Read_32(ADDR_AIRMS),HEX); // AIRMS /*Read and Print RMS & WATT Register using ADE9000 Read Library*/ ade9000.ReadVoltageRMSRegs(&vltgRMSRegs); //Template to read Power registers from ADE9000 and store data in Arduino MCU ade9000.ReadActivePowerRegs(&powerRegs); Serial.print("AVRMS:"); Serial.println(vltgRMSRegs.VoltageRMSReg_A); //Print AVRMS register Serial.print("AWATT:"); Serial.println(powerRegs.ActivePowerReg_A); //Print AWATT register } void readResampledData() { // CLEAR INTERRUPTS, WRITE 0x20000 TO STATUS0 ade9000.SPI_Write_32(ADDR_STATUS0, 0x20000); while(digitalRead(pinNametoDigitalPin(PA_0))) { ; } // POLL STATUS0, BIT 17 PAGE FULL uint32_t status0 = 0; while(1) { status0 = ade9000.SPI_Read_32(ADDR_STATUS0); // IS PAGE FULL INTERRUPT (BIT 17 IN STATUS0) TRUE? if(bitRead(status0, 17) == true) { break; } } uint16_t wfb_address = 0; // READ ADDRESS 0x4A3 WFB_TRG_STAT uint16_t wfb_trg_stat = ade9000.SPI_Read_16(ADDR_WFB_TRG_STAT) >> 12; // IS WFB_LAST_PAGE EQUAL TO 0xBFF? if(wfb_trg_stat == 7) { // READ 0x400 SAMPLES FROM 0x800 TO 0xBFF (PAGE 0 TO PAGE 7) wfb_address = 0x800; } else if (wfb_trg_stat == 15){ // READ 0x400 SAMPLES FROM 0xC00 TO 0xFFF (PAGE 8 TO PAGE 15) wfb_address = 0xC00; } else { Serial.println("wfb_trg_stat != 7 && != 15."); Serial.print("wfb_trg_stat = "); Serial.println(wfb_trg_stat); } Serial.println(wfb_address, HEX); // curent version of SPI_Burst_Read_Resampled_Wfb reads 16 bit resampled // data, so has to be reworked due to fixed sampling rate data stream. // for now focusing on PAGE_FULL_IRQ timings // ade9000.SPI_Burst_Read_Resampled_Wfb(wfb_address,128,&resampledData); } void resetADE9000(void) { digitalWrite(ADE9000_RESET_PIN, LOW); delay(50); digitalWrite(ADE9000_RESET_PIN, HIGH); delay(1000); Serial.println("Reset Done"); }
Find difference