Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
Untitled diff
创建于
7年前
差异永不过期
清除
导出
分享
解释
34 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
105 行
全部复制
125 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
196 行
全部复制
#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
复制
已复制
复制
已复制
#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);
复制
已复制
复制
已复制
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
复制
已复制
复制
已复制
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() {
复制
已复制
复制
已复制
readRegisterData();
//
readRegisterData();
readResampledData();
readResampledData();
复制
已复制
复制
已复制
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()
{
{
复制
已复制
复制
已复制
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");
}
}
已保存差异
原始文本
打开文件
#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"); }
更改后文本
打开文件
#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"); }
查找差异