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.

ADS1293: ERROR_STATUS and ERROR_RANGE register readings from ADS1293

Part Number: ADS1293

Hello,

I am using ads1293 in my project and started reading data. I am also reading the ERROR_STATUS and ERROR_RANGE registers to see whether there are any errors. Here is my problem. These error readings are UNSTABLE. Meaning, some times, there is no error at all but at other times for the same setup, errors do show up. Specially, channel x instrumentation amplifier output sign(positive output of INA smaller than negative output). How significant is this error? Also, when this error bit is on, it is going on for every samples that I collect during that session. How can I achieve a stable and error free readings? Is there any tweaking? Regards.

Nazrul 

  • Hi Nazrul,

    Can you please share the complete device register settings and a schematic for your project? Also, please describe how you have the device inputs configured for these tests. Are you providing an analog input to any of the channels?

    Best Regards,

  • Hi Ryan,

    Following is the complete register settings:

    const unsigned char ADS1293_Default_Register_Settings[48] = {
    //Reg0: CONFIG
    0x02,
    //Reg1:FLEX_CH1_CN
    0x40, //11
    //Reg2:FLEX_CH2_CN
    0x40, //19
    //Reg3:FLEX_CH3_CN
    0x00, //00, //40
    //Reg4:FLEX_PACE_CN
    0x00,
    //Reg5:FLEX_VBAT_CN
    0x00,
    //Reg6:LOD_CN
    0x00, //08,
    //Reg7:LOD_EN
    0xFF, //00,
    //Reg8:LOD_CURRENT
    0xFF, //00,
    //Reg9:LOD_AC_CN
    0x00,
    //Reg10:CMDET_EN
    0x07,
    //Reg11:CMDET_CN
    0x00,
    //Reg12:RLD_CN
    0x04,
    //Reg13:WILSON_EN1
    0x00,
    //Reg14:WILSON_EN2
    0x00,
    //Reg15:WILSON_EN3
    0x00,
    //Reg16:WILSON_CN
    0x00,
    //Reg17:REF_CN
    0x00,
    //Reg18:OSC_CN
    0x04,
    //Reg19:AFE_RES
    0x3F,//00,
    //Reg20:AFE_SHDN_CN
    0x24,
    //Reg21:AFE_FAULT_CN
    0x04, //00,
    //Reg22:RESERVED
    0x00,
    //Reg23:AFE_PACE_CN
    0x01,
    //Reg24:ERROR_LOD
    0x00,
    //Reg25:ERROR_STATUS
    0x00,
    //Reg26:ERROR_RANGE1
    0x00,
    //Reg27:ERROR_RANGE2
    0x00,
    //Reg28:ERROR_RANGE3
    0x00,
    //Reg29:ERROR_SYNC
    0x00,
    //Reg30:ERROR_MISC
    0x00,
    //Reg31:DIGO_STRENGTH 0x03
    0x00,
    //Reg32:ABSENT
    0x00,
    //Reg33:R2_RATE = 8
    0x08,//0x02
    //Reg34:R3_RATE_CH1=32
    0x20, //02
    //Reg35:R3_RATE_CH2=32
    0x20, //02
    //Reg36:R3_RATE_CH3=32
    0x20, //80
    //Reg37:R1_RATE=4
    0x00,
    //Reg38:DIS_EFILTER
    0x04,
    //Reg39:DRYYB_SRC
    0x08,
    //Reg40:SYNCB_CN
    0x40,
    //Reg41:MASK_DRDYB
    0x00,
    //Reg42:MASK_ERR
    0x00,
    //Reg43:RESERVED
    0x00,
    //Reg44:RESERVED
    0x00,
    //Reg45:RESERVED
    0x09,
    //Reg46:ALARM_FILTER
    0x33,
    //Reg47:CH_CNFG
    0x30,
    };
    At first, I set the channels, ch1 and ch2, to test mode(connect channel 1/2 to positive test mode, pls., see the REG1/REG2 content as above). And take some readings. The values I get not exact what I am supposed to get(according test Mode) but very near. At the same time, I read the ERROR_STATUS and ERROR_RANGE1/2 registers. During that time(in test mode), I can see some of the bits of these register getting set including SIGN_CH1/CH2 bits. Then I connect ch1 and ch2 to the actual analog inputs(pls., see the content of REG 1/2/3 as commented out as above). While I am reading analog inputs, that time also, I keep reading the STATUS/RANGE registers and see some of the error bits are showing up. But not in a consistent way. Meaning, in one session, I read those registers for 1000 times, in all, those bits will keep showing. In the same setup, the next 1000 readings, these bits are not showing any more. But, they might show up at any time again. I am looking some sort of stability or consistency. Your feedback in this matter is highly appreciated. My best regards.

    Nazrul
  • Hi Nazrul,

    Thanks for the description. Are INx pins floating? The ERROR_RANGEx bits are set when the INA outputs are too close to the rails. This can occur if you are not driving the inputs to a known voltage. Try connecting a small DC voltage between the Channel 1 inputs (say 100mV) and see if the ERROR_RANGE1 bits remain more consistent.

    Best Regards,
  • Hi Ryan,
    Thanks for the reply. I am using ch1 and ch2. As such, I have used 4 inputs(IN1,IN2,IN3 and IN3). IN1, IN2, IN3 as inputs and IN4 to RLD. They are connected to the corresponding electrodes and not floating. In the RANGE1/2 register, the SIGN_CH1/CH2(Positive output of INA is smaller than negative output) is getting set. The problem is, it stays set for the whole sample collection session(say, 1000 samples, I collect in that session). My question is why it is staying set for all these samples? Regards.
    Nazrul
  • Hi Nazrul,

    Sorry for misinterpreting your question. The contents of the ERROR_RANGEx registers are latched high until the error registers are read. Also, if the condition is still present within a few internal clock cycles, the error bits will return high following a register read.

    My thought here is that somehow these bits are being set before/during your data collection. They will remain this way until you repeat your collection and poll the error register contents again.

    I hope this helps. You can find more information in 8.3.24-28.


    Best Regards,

  • Hi Ryan,
    Sorry to come back to you again. According to you, initially /at the begining, they(ERROR_RANGEx bits) may set high, but, if I repeat the data collection and then read the registers, those bits should be clear. If this is the case, it doesn't happen this way in my case. In my case, I am reading the samples and immediately, I read the ERROR_RANGEx registers. And I am repeating this sequence for 1000 times. At the very first, I see some error bit/bits got set and in the subsequent readings, they are still set(I save those readings in a array). They don't get cleared. Comments, please. Regards.

    Nazrul