merhabalar
arduino ile ads1261 entegresini kullanmaya çalışıyorum. entegre spı ile haberleşiyor.
araştırmalarım sonucu bu kodu #include <SPI.h>
#define Status 0x01
#define MODE0 0x02
#define MODE1 0x03
#define MODE2 0x04
#define MODE3 0x05
#define REF 0x06
#define OFCAL0 0x07
#define OFCAL1 0x08
#define OFCAL2 0x09
#define FSCAL0 0x0A
#define FSCAL1 0x0B
#define FSCAL2 0x0C
#define IMUX 0x0D
#define IMAG 0x0E
#define REVERSED 0x0F
#define PGA 0x10
#define INPMUX 0x11
#define INPBIAS 0x12
#define RREG 0x20
#define WREG 0x40
#define START 0x08
#define STOP 0x0A
#define RDATA 0x12
#define UNLOCK 0xF5
const int ADS1261_DRDY_PIN = 3;
const int ADS1261_CS_PIN = 10;
const int ADS1261_START_PIN = 2;
const int ADS1261_PWDN_PIN = 4;
const int ADS1261_STOP_PIN = 5;
uint8_t byt1,byt2,byt3,byt4,byt5;
void setup()
{
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);
SPI.setDataMode (SPI_MODE1);
// SPCR |= 0b01010100;
// //SPI status register
// SPSR |= 0b00000000;
Serial.begin(9600);
pinMode(ADS1261_DRDY_PIN, INPUT); //Data ready input line
pinMode(ADS1261_CS_PIN, OUTPUT); //Chip enable output line
pinMode(ADS1261_START_PIN, OUTPUT); //Start
pinMode(ADS1261_PWDN_PIN, OUTPUT); //Power down output
pinMode(ADS1261_STOP_PIN, OUTPUT); //Power down output
delay(100);
digitalWrite(ADS1261_CS_PIN, HIGH);
digitalWrite(ADS1261_START_PIN, HIGH);
ads1261_Init();
}
void loop()
{
if(digitalRead(ADS1261_DRDY_PIN)==HIGH)
{
Serial.println("drdy hıgh");
}
delay (500);
if(digitalRead(ADS1261_DRDY_PIN)==LOW)
{
SPI.transfer(RDATA);
byte dataToSend1 = 0x01 | RREG;
digitalWrite(ADS1261_CS_PIN, LOW);
SPI.transfer (dataToSend1);
SPI.transfer (0x00);
byt1= SPI.transfer (0xFF);
digitalWrite(ADS1261_CS_PIN, HIGH);
Serial.println(byt1,BIN);
Serial.println("drdy LOW");
}
delay (1000);
}
void ads1261_Reset() //PWDN_PIN MUST BE HIGH FOR OPERATION
{
digitalWrite(ADS1261_PWDN_PIN, HIGH); delay(100);
digitalWrite(ADS1261_PWDN_PIN, LOW); delay(100);
digitalWrite(ADS1261_PWDN_PIN, HIGH); delay(100);
}
void ads1261_Init()
{
ads1261_Reset(); delay(100);
ads1261_Reg_Write(Status, 0x01);delay(20);
ads1261_Reg_Write(MODE0, 0x24); delay(20);
ads1261_Reg_Write(MODE1, 0x61); delay(20);
ads1261_Reg_Write(MODE2, 0x00); delay(20);
ads1261_Reg_Write(MODE3, 0x00); delay(20);
ads1261_Reg_Write(REF, 0x05);delay(20);
ads1261_Reg_Write(OFCAL0, 0x00);delay(20);
ads1261_Reg_Write(OFCAL1, 0x00);delay(20);
ads1261_Reg_Write(OFCAL2, 0x00);delay(20);
ads1261_Reg_Write(FSCAL0, 0x00);delay(20);
ads1261_Reg_Write(FSCAL1, 0x00);delay(20);
ads1261_Reg_Write(FSCAL2, 0x40);delay(20);
ads1261_Reg_Write(IMUX, 0xFF);delay(20);
ads1261_Reg_Write(IMAG, 0x00);delay(20);
ads1261_Reg_Write(REVERSED,0x00);delay(20);
ads1261_Reg_Write(PGA, 0x00);delay(20);
ads1261_Reg_Write(INPMUX,0xFF);delay(20);
ads1261_Reg_Write(INPBIAS,0x00);delay(20);
delay(100);
digitalWrite(ADS1261_CS_PIN, LOW);
SPI.transfer(UNLOCK);
delay(2);
digitalWrite(ADS1261_CS_PIN, HIGH);
delay(100);
digitalWrite(ADS1261_CS_PIN, LOW);
SPI.transfer(START); //Inicia a conversão via código 08h
digitalWrite(ADS1261_CS_PIN, HIGH);
digitalWrite(ADS1261_STOP_PIN, HIGH);
}
void ads1261_Reg_Write (unsigned char READ_WRITE_ADDRESS, unsigned char DATA) //registerlara default değerlerini atama
{
byte dataToSend = READ_WRITE_ADDRESS | WREG;
digitalWrite(ADS1261_CS_PIN, LOW);
delay(5);
SPI.transfer(dataToSend);
SPI.transfer(0xFF);
SPI.transfer(DATA);
delay(2);
digitalWrite(ADS1261_CS_PIN, HIGH);
}
yazdım ve void loop içindeki datatosend1 e yazdığım register adresinin geri dönüşü olarak default değeri geliyor.
birinci sorum baştaki konfigürasyon ayarlarını yaparken girdiğim değerleri bana döndürmüyor sürekli datasheet deki default değerlerini döndürüyor bunu benim ayarladığım değerlere nasıl çevirebilim?
ikinci sorum ben bu entegreden adc değerini nasıl okuyacağım?
üçüncü sorum ads1261_init fonksiyonunda ki konfigürasyon ayarlarım doğru mu ?
(https://i.ibb.co/zxNctQT/Whats-App-Image-2020-02-28-at-17-18-54.jpg) (https://ibb.co/zxNctQT)
osiloskoptan ölçtüğüm değer bu sarı olan sclk clock sinyalim kırmızı olan ise MISO bacağım entegreden gelen cevap(bir de sinyalin neden bu kadar parazitli geldiğini anlamadım haberleşme sizce doğru mu)
(https://i.ibb.co/DbThMm2/blockdiyagram.png) (https://ibb.co/DbThMm2)
(https://i.ibb.co/dcqrPgm/Ekran-Al-nt-s.png) (https://ibb.co/dcqrPgm)
(https://i.ibb.co/VgsYPWX/Ekran-Al-nt-s-1.png) (https://ibb.co/VgsYPWX)
(https://i.ibb.co/xXgrk3C/giri-ler.png) (https://ibb.co/xXgrk3C)