Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
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"); }
違いを見つける