This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1298RECGF-FE stuck at reading registers

Other Parts Discussed in Thread: ADS1298, ADS1299

Hello!

I have a problem. Suddenly, my dev kit stopped working and reads registers very slowly, plus i can't change any options. I have seen this problem on the forum but i don't know how i can resolve this issue. I haven't changed anything in the configuration prior to this error. Please advise.

  • Hey Matei,

    Can you attach a link of where you've seen the issue before on the forum?

    Regards,
    Brian Pisani
  • Matei,

    Did you change any of the hardware settings on the EVM? I would recommend looking at the user's guide and making sure all of the hardware settings are in their default state. Hopefully that will fix things.

    Regards,

    Brian Pisani

  • I haven't changed a thing. I don't even use the MMB0 appart for the 5V,3V and GND supply. The jumpers are the same, and the code is the same. Here is my register config (using the OpenBci library for arduino):

    ADS.RESET();
    ADS.WREG(CONFIG1, 0b10000000);
    ADS.WREG(CONFIG2, 0b00010000);
    // ADS.WREG(CONFIG3, 0b11011100);
    ADS.WREG(LOFF, 0b00000011);
    ADS.WREG(LOFF_SENSP, 0b11111111);
    ADS.WREG(CH1SET, 0b00000001);
    ADS.WREG(CH2SET, 0b00000001);
    ADS.WREG(CH3SET, 0b00000001);
    ADS.WREG(CH4SET, 0b00000001);
    ADS.WREG(CH5SET, 0b00000001);
    ADS.WREG(CH6SET, 0b00000001);
    ADS.WREG(CH7SET, 0b00000001);
    ADS.WREG(CH8SET, 0b00000101);

    I use a Ardunio board to take the data via de SPI interface ( J3 ). I looked at the SPI signals via an oscilloscope and have seen that the DIN pin for the ADS1298 get's pulled up to something similar to 0.75% of the high value so the rest of the high signal is so small that maybe the ADS1298 interprets it wrong. I can still read stuff from the ADS1298 but can't configure any register so they are stuck with what probably is their default values.

  • Hi Matei,

    It seems odd that you would be able to read from the device but not write. When you say 0.75%, do you mean that when DIN is high that its 0.0075*VCC? That level will definitely not be latched in by the ADS1298 digital logic as a logic high. If it is 0.75*VCC, it may or may not be latched in. The DIN signal is driven by the master so perhaps try looking at your signals directly from the Arduino without the ADC plugged in and see if the behavior persists.

    Regards,
    Brian Pisani
  • Hi Brian,

    Sorry, I explained it badly. Yes, I was trying to say 0.75*VCC. So the low is the 0.75*VCC and the remaining high is just too small for the ADS1298 to interpret it correctly. I can see the impulses but they are too small. I have since changed the Arduino with a brand new one, changed the code to the default version ( running the default OpenBCI lib and arduino code ) and the problem still persists :( . Also, when i unplug the DIN pin from the ADS1298 board everything looks ok on the oscilloscope. As soon as i plug it in, the low jumps to the weird value. Here is my wiring that has worked until the issue arised

  • Hey Matei,

    Do the ADS1298 and the Arduino board share a digital ground? It's possible that if the digital ground voltages are offset then they will not be able to communicate.

    Brian Pisani
  • Hi Brian,

    Yes, the left most blue wire connecting to the TP is the ground. This exact configuration with the same software yield great results. But then, suddenly, one day it stopped working...
  • Hey Matei,

    Do you perhaps have another EVM board? If the issue remained on the second board then we could rule out damage due to ESD or some other electrical event.

    Brian
  • Hi Brian,


    I have ordered a new ADS1298ECG PDK and this one appears to be working. Still quite unsatisfied that a 200$ pack just stopped working for no reason and that I had to order a brand new one with the MMB0. Now I have two MMB0 and i only need one. Anyway I can return it or can I claim warranty for the faulty ADS1298? 

  • Hey Matei,

    I'm not sure of the details of the Warranty Policy through the TI Store, but if you have any questions regarding a claim, I'd advise you call customer service. You can find the phone number for your region here: www.ti.com/.../contact.tsp

    Regards,
    Brian Pisani
  • Ok Brian thanks! 

    Have a good day!

  • Hello Matei
    Hope You are doing good.

    I am trying to connect ADS1298 with Arduino UNO with SPI interface and want to print the value of 8 channel data on serial console of Arduino .
    Can you please send me the links for Open BCI library that you have used and I will be grateful if you can send codes,schematic and other related stuff.

    Thank you in advance,

    Hiren
  • Hi Hiren,

    I remember I used some parts of the code from a library found online. It was Open BCI or something related. I just searched on google now and found a bunch of codes that you can use. it has been a long time since I looked on this project but I found a part of the code which I used. Try this:


    #include <ADS1299.h>

    ADS1299 ADS;

    int inPin = 4;               

    int state = HIGH;      
    int reading;           
    int previous = LOW;    

    long time = 0;         
    long debounce = 200;  

    void setup() {
      Serial.begin(115200);
      ADS.setup(9, 10); // (DRDY pin, CS pin);
      delay(10);
      ADS.RESET();
      ADS.WREG(CONFIG1, 0b10000110);
      ADS.WREG(CONFIG2, 0b00010000);
      //ADS.WREG(CONFIG3, 0b11011100);
      ADS.WREG(LOFF, 0b00000011);
      ADS.WREG(LOFF_SENSP, 0b11111111);
      ADS.WREG(CH1SET, 0b00000001);
      ADS.WREG(CH2SET, 0b00000001);
      ADS.WREG(CH3SET, 0b00000001);
      ADS.WREG(CH4SET, 0b00000001);
      ADS.WREG(CH5SET, 0b00000001);
      ADS.WREG(CH6SET, 0b00000001);
      ADS.WREG(CH7SET, 0b00000001);
      ADS.WREG(CH8SET, 0b00000101);
     
      ADS.RREG(0x00, 0x17);
        Serial.println("----------------------------------------------");
        
      //Test?
      //ADS.WREG(CONFIG3, 0b11000000);
     
      pinMode(inPin, INPUT);
        
    }

    void loop(){

    //reading=digitalRead(inPin);
    //  if (reading == HIGH && previous == LOW && millis() - time > debounce)
    //  {
    //    if (state == HIGH)
    //      state = LOW;
    //    else
    //      state = HIGH;
    //    time = millis();    
    //  }
    //  if (state == HIGH)
    //     ADS.updateData();
    //  else
    //     {Serial.println(500000);
    //     delay(15);}
    //  previous = reading;
    }