Created
August 15, 2020 18:47
-
-
Save dj1711572002/5122a210c2921e6569978d0e8c77ae37 to your computer and use it in GitHub Desktop.
M5Atom_SPI_AD7194EVAL board 6CH StrainGaugeBridges
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//AD7194 M5Atom SPI test | |
//2020.08.16 Shinshu-Makers | |
#include <M5StickC.h> | |
#include <SPI.h> | |
int i=0,j=0; | |
int MA=10; | |
uint8_t data0,data1,data2; | |
uint8_t recvdata; | |
uint8_t mdata0,mdata1,mdata2; | |
uint8_t condata0,condata1,condata2; | |
uint8_t stdata0,stdata1,stdata2,stdata3; | |
uint8_t sdata; | |
//float mV0,mV1,mV2,mV3; | |
//==========data Movng Average parameters =================== | |
double mV0arry[500]; | |
double mV1arry[500]; | |
double mV2arry[500]; | |
double mV3arry[500]; | |
double mV4arry[500]; | |
double mV53arry[500]; | |
//double mV3arry[100]; | |
double mV0sum,mV1sum,mV2sum,mV3sum,mV4sum,mV5sum; | |
double mV0ave,mV1ave,mV2ave,mV3ave,mV4ave,mV5ave; | |
double mV0,mV1,mV2,mV3,mV4,mV5; | |
double mVA[6]; | |
//========================================================================= | |
//====================AD7194 CH change===================================== | |
//========================================================================= | |
void ch_Change(int ch){ | |
char chN; | |
switch (ch){ | |
case 0: | |
chN=0x01; | |
break; | |
case 1: | |
chN=0x23; | |
break; | |
case 2: | |
chN=0x45; | |
break; | |
case 3: | |
chN=0x67; | |
break; | |
case 4: | |
chN=0x89; | |
break; | |
case 5: | |
chN=0xAB; | |
break; | |
} | |
//設定レジスタへ設定データ書き込み | |
recvdata= SPI.transfer(0x10);//設定レジスタ書き込み指定 | |
recvdata= SPI.transfer(0x00) ;//設定レジスタ23-16bit書き込み=デフォルトのまま | |
recvdata= SPI.transfer(chN) ;//設定レジスタ15-8bit書き込み=1CH設定 AIN1+ AIN1-(=AIN2) | |
recvdata= SPI.transfer(0x17) ;//設定レジスタ7-0bit書き込み=BUF Gain128 | |
//Config書き込み確認 | |
recvdata= SPI.transfer(0x50);//Configレジスタ書き込み指定 | |
condata0=recvdata= SPI.transfer(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
condata1=recvdata= SPI.transfer(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
condata2=recvdata= SPI.transfer(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
recvdata= SPI.transfer(0x40);//status request | |
sdata= SPI.transfer(0x0);//status read | |
//Serial.print("status="); | |
//Serial.println(sdata); | |
//pc.printf("ch=%d,sdata=%x:condata:%x,%x,%x\n\r",ch,sdata,condata0,condata1,condata2); | |
} | |
//============================================================================= | |
//============================================================================= | |
//============================================================================= | |
//====================================AD7194 Initialize=========================================================== | |
//########################################################################## | |
int AD7194_init(){ | |
//**************************AD7194 Set******************************************************* | |
delay(1); | |
//set_AD7194(); | |
//MODEレジスタへモード設定データ書き込み | |
recvdata= SPI.transfer(0x08);//MODEレジスタ書き込み指定 | |
recvdata= SPI.transfer(0x08) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
recvdata= SPI.transfer(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
recvdata= SPI.transfer(0x01) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
//mode書き込み確認 | |
recvdata= SPI.transfer(0x48);//MODEレジスタ書き込み指定 | |
mdata0=SPI.transfer(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
mdata1=SPI.transfer(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
mdata2=SPI.transfer(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
// pc.printf("INIT:mdata:%x,%x,%x\n\r",mdata0,mdata1,mdata2); | |
//設定レジスタへ設定データ書き込み | |
recvdata= SPI.transfer(0x10);//設定レジスタ書き込み指定 | |
recvdata= SPI.transfer(0x00) ;//設定レジスタ23-16bit書き込み=デフォルトのまま | |
recvdata= SPI.transfer(0x01) ;//設定レジスタ15-8bit書き込み=1ch-4ch自動スキャン設定 AIN1+ AIN2- | |
recvdata= SPI.transfer(0x17) ;//設定レジスタ7-0bit書き込み=BUF Gain128 | |
//Config書き込み確認 | |
recvdata= SPI.transfer(0x50);//Configレジスタ書き込み指定 | |
condata0=SPI.transfer(0x00) ;//MODEレジスタ23-16bit書き込み=連続変換モード+InternalClock4.8MHz | |
condata1=SPI.transfer(0x00) ;//MODEレジスタ15-8bit書き込み=デフォルトのまま | |
condata2=SPI.transfer(0x00) ;//MODEレジスタ7-0bit書き込み=4800Hz設定 | |
} | |
//***************************************************************************************************************** | |
//***************************************************************************************************************************** | |
void setup() { | |
M5.begin(); | |
// put your setup code here, to run once: | |
SPI.begin(19,33,23,-1);//sclk,MISO,MOSI,SS=CS=GND | |
// MODE register writing | |
AD7194_init();//Initialize AD7194 | |
} | |
void loop() { | |
i++; | |
ch_Change(i%6); | |
recvdata=SPI.transfer(0x58); | |
delay(1);//1msec以上WaitいれないとCH切り替えできない | |
data0=SPI.transfer(0x0); | |
data1=SPI.transfer(0x0); | |
data2=SPI.transfer(0x0); | |
mVA[i%6]=((double)data0*65536+(double)data1*256+(double)data2)/5084; //No MA | |
//mV0arry[i%MA]=((double)data0*65536+(double)data1*256+(double)data2)/5084; | |
delay(1);//1msec以上WaitいれないとCH切り替えできない | |
recvdata= SPI.transfer(0x40);//status request | |
sdata= SPI.transfer(0x0);//status read | |
//Serial.print("status="); | |
// Serial.println(sdata,HEX); | |
if(i%6==0) | |
{ | |
Serial.print(mVA[0],1); | |
Serial.print(","); | |
Serial.print(mVA[1],1); | |
Serial.print(","); | |
Serial.print(mVA[2],1); | |
Serial.print(","); | |
Serial.print(mVA[3],1); | |
Serial.print(","); | |
Serial.print(mVA[4],1); | |
Serial.print(","); | |
Serial.print(mVA[5],1); | |
Serial.print(","); | |
Serial.print(sdata,HEX); | |
Serial.print(","); | |
Serial.println(millis()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment