Other Parts Discussed in Thread: ADS1298
Hello!
I'm new to the forums. I'm trying to communicate with my ADS1298 from PIC18F microcontroller via ADUM1402 digital isolator. Sometimes ADS1298 starts (1), sometimes doesn't (2) and sometimes it starts but works very strangely (3). I could possibly damage ADS1298 (and I don't know how to check it), because one time I've confused the polarity of DGND/DVDD (but I've noticed it in a few seconds and turned everything off)
The three modes of it's work are listed below.
1 (normal?). It starts and issues DRDY signal:



Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
OpenSPI(SPI_FOSC_64, MODE_01, SMPMID);
mLED_On();
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
var = putcSPI(0x06); // RESET
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
//var = putcSPI(0x06); // RESET (sometimes I try that)
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
Delay10KTCYx(240); // delay for 400 mS
var = putcSPI(0x11); // SDATAC
var = putcSPI(0x40 | 0x01); // WREG from CONFIG1
var = putcSPI(0x02); // 3 bytes
var = putcSPI(0x86); // CONFIG1 = 86
var = putcSPI(0x10); // CONFIG2 = 10
var = putcSPI(0xE0); // CONFIG3 = E0
// Channels
var = putcSPI(0x40 | 0x05); // WREG from CH1SET
var = putcSPI(0x07); // 8 bytes
var = putcSPI(0x05); // CH1SET = 05
var = putcSPI(0x00); // ...
var = putcSPI(0x00);
var = putcSPI(0x00);
var = putcSPI(0x00);
var = putcSPI(0x00);
var = putcSPI(0x05);
var = putcSPI(0x05);
var = putcSPI(0x08); // START
var = putcSPI(0x10); // RDATAC
while (DRDY); // wait for DRDY to go low
mLED_Off();