Multiple SPI ssd1306 and ADS1194 problem

Hi,
As project using Arduino-UNO connected with Mikroe clickboards, I start with the oled project that is working fine. Then I make a new project for the ADS1194 (4 channels), it’s working fine also. Because the OLED is quite small, I decided to get the information from only one channel and it still works fine.
I like to see the information from the ads1194 channel on the OLED screen and then the problem with multiple SPI occurs.
I spend hours and changes the clickboard place (changing also the CS pin) but no results.
OLED_MISO = 11 ADS1194_MISO = 11
ADS1194_MOSI =12
OLED_CLK = 13 ADS1194_CLK = 13
OLED_DC = 6
OLED_RESET = 17 ADS1194 Reset = 16
OLED_CS = 10 ASD1194 cs_Pin = 9
ADS1194 data ready = 3
All these connections are fixed by the routing from the Click shield board.
The OLED works fine and if I measure the SPI with logic-analyser connected to MISO, CLK and CS from the oled, I can follow the data.
If I connect the logic-analyser to the ASD1194 cs_Pin = 9 then MISO stays HIGH, CLK stays LOW and CS stays LOW. On the IDE terminal appears “ADS119X not started” again and again. So the program is still running. Also to see if the display runs, I put a random fake result on the screen.

How come the ADS1194 doesn’t start? Can anyone please help me?
Thanks Luc

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "ADS119X.h"

// If using software SPI (the default case):
const byte OLED_MOSI = 11;
const byte OLED_CLK =  13;
const byte OLED_DC =   6;
const byte OLED_CS =  10;
const byte OLED_RESET = 17;
//Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);

const byte dataReady_Pin = 3;
const byte reset_Pin = 16;
const byte cs_Pin = 9; 
ADS119X adc(dataReady_Pin, reset_Pin, cs_Pin);

// variables
bool dataReady = 0;
bool prev_dataReady = 0;
byte received ; 
boolean verbosity = 1; 
byte numberOfChannels;

// Serial comm
const byte numChars = 32;
char receivedChars[numChars];
char tempChars[numChars];        // temporary array for use when parsing
int command [2]; 
boolean newData = false;
byte state = 1; 
int elapsed = 0 ;
long prevMicros = 0 ;

void setup() 
    {
    pinMode(OLED_CS, OUTPUT);       //10
    pinMode(cs_Pin, OUTPUT);        //9
    Serial.begin(115200);
    display.begin(SSD1306_SWITCHCAPVCC);    
    display.clearDisplay();
    display.setTextColor(WHITE);
    //display.setFont(0);
    display.setTextSize(0,2);
    display.setCursor(42,28);
    display.println("Oled Testing");
    display.setCursor(54,48);
    display.println("123456789");
    display.drawRect(32, 26, 96, 38, WHITE);
    display.display();
    delay(5000);
    display.clearDisplay();
    display.ssd1306_command(0x81);
    display.ssd1306_command(20); //max 157
    display.display();
    delay(5000);
    }
   
void loop() 
    {
    digitalWrite(OLED_CS, LOW);
    display.clearDisplay();
    display.drawRect(32, 26, 96, 38, WHITE);
    beattest();
    display.display();
    digitalWrite(OLED_CS, HIGH);

    delay(2000);
    digitalWrite(cs_Pin, LOW);
    // adc begin() puts the ADS in a datasheet state, if verbosity is true it will print the ADS's register values
    if (adc.begin())
      {
      digitalWrite(cs_Pin, HIGH);
      numberOfChannels = adc.getNumberOfChannels();
      if (verbosity) {
          delay(5000); 
//        Serial.print("ADS119X Connected") ; 
//        Serial.println("") ;  
//        displayRegs (); 
//        Serial.print("Num Channels: ") ;         
//        Serial.print(numberOfChannels) ; 
//        Serial.println();  
      }    
    } else {
      Serial.print("ADS119X not started ") ;
      Serial.print("\n") ;
    }
    
    // Stop continuous conversion, and send commands to configure 
    adc.sendCommand (ADS119X_CMD_SDATAC);
    adc.setAllChannelGain( ADS119X_CHnSET_GAIN_12);  
    adc.setAllChannelMux(ADS119X_CHnSET_MUX_NORMAL); 
    adc.setDataRate(ADS119X_DRATE_125SPS);     
    adc.sendCommand (ADS119X_CMD_RDATAC);
    //displayRegs ();
    
     // Check if the ADC conversion data is ready
    if (state) { 
    dataReady = adc.isDRDY();

    if (!prev_dataReady && dataReady) {
      elapsed = micros() - elapsed  ;
      //Serial.println(elapsed);
      elapsed = micros() ; 
      adc.readChannelData();
//    printStatus();
      printData();
    }
    prev_dataReady= dataReady;
  }
    digitalWrite(cs_Pin, HIGH);
}                                           

void printStatus ()
{
  Serial.print(adc.getStatus(),HEX);
  Serial.print(", ");
}

void printData ()
{
  //Serial.print(0);
  //Serial.print(":");
  Serial.print(adc.getChannelData(0));
  Serial.print(","); 
  Serial.println("");
}

void print8bits(int var) 
{
  for (unsigned int bitpos = 0x80; bitpos; bitpos >>= 1) 
    {
    Serial.write(var  & bitpos ? '1' : '0');
    }
  Serial.println();
}
  
void beattest()
    {
    int beat = (random(70,90));
    display.setCursor(106,46); 
    display.setTextColor(WHITE);                                     
    display.print(beat);
    display.display();
    }

p { margin-bottom: 0.25cm; line-height: 115% }

So the ADS1194 works fine by itself but not when you try to use the OLED? What does your sketch look like that does work with the ADS1194. A typical sketch would not call adc.begin() within loop() since you are resetting the chip repeatedly. It is usually sufficient to pull the CS line HIGH when you want to disconnect it and then back LOW when you want to talk to it.

Thanks, the OLED still works fine but the ADS1194 is not started and now the CS pin from ADS1194 stay always High even with the command digitalWrite(cs_Pin, LOW);
I have change the code to

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "ADS119X.h"

// If using software SPI (the default case):
const byte OLED_MOSI = 11;
const byte OLED_CLK =  13;
const byte OLED_DC =   6;
const byte OLED_CS =  10;
const byte OLED_RESET = 17;
//Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);

const byte dataReady_Pin = 3;
const byte reset_Pin = 16;
const byte cs_Pin = 9; 
ADS119X adc(dataReady_Pin, reset_Pin, cs_Pin);

// variables
bool dataReady = 0;
bool prev_dataReady = 0;
byte received ; 
boolean verbosity = 1; 
byte numberOfChannels;

// Serial comm
const byte numChars = 32;
char receivedChars[numChars];
char tempChars[numChars];        // temporary array for use when parsing
int command [2]; 
boolean newData = false;
byte state = 1; 
int elapsed = 0 ;
long prevMicros = 0 ;

void setup() 
    {
    pinMode(OLED_CS, OUTPUT);       //10
    pinMode(cs_Pin, OUTPUT);        //9
    Serial.begin(115200);
    display.begin(SSD1306_SWITCHCAPVCC);    
    display.clearDisplay();
    display.setTextColor(WHITE);
    //display.setFont(0);
    display.setTextSize(0,2);
    display.setCursor(42,28);
    display.println("Oled Testing");
    display.setCursor(54,48);
    display.println("123456789");
    display.drawRect(32, 26, 96, 38, WHITE);
    display.display();
    delay(5000);
    display.clearDisplay();
    display.ssd1306_command(0x81);
    display.ssd1306_command(20); //max 157
    display.display();
    delay(2000);

    digitalWrite(cs_Pin, LOW);
    adc.begin();
    delay(5000);
    // adc begin() puts the ADS in a datasheet state, if verbosity is true it will print the ADS's register values
    if (adc.begin())
      {
      numberOfChannels = adc.getNumberOfChannels();
      if (verbosity) {
        Serial.print("ADS119X Connected") ; 
        Serial.println("") ;  
//        displayRegs (); 
        Serial.print("Num Channels: ") ;         
        Serial.print(numberOfChannels) ; 
        Serial.println();  
      }    
    } else {
      Serial.print("ADS119X not started ") ;
      Serial.print("\n") ;
      digitalWrite(cs_Pin, HIGH);
    }
    
    // Stop continuous conversion, and send commands to configure
    digitalWrite(cs_Pin, LOW); 
    adc.sendCommand (ADS119X_CMD_SDATAC);
    adc.setAllChannelGain( ADS119X_CHnSET_GAIN_12);  
    adc.setAllChannelMux(ADS119X_CHnSET_MUX_NORMAL); 
    adc.setDataRate(ADS119X_DRATE_125SPS);     
    adc.sendCommand (ADS119X_CMD_RDATAC);
    //displayRegs ();
    digitalWrite(cs_Pin, HIGH);
    }

void loop() 
    {
    digitalWrite(OLED_CS, LOW);
    display.clearDisplay();
    display.drawRect(32, 26, 96, 38, WHITE);
    beattest();
    display.display();
    digitalWrite(OLED_CS, HIGH);
   
    digitalWrite(cs_Pin, LOW);
     // Check if the ADC conversion data is ready
    if (state) { 
    dataReady = adc.isDRDY();
    if (!prev_dataReady && dataReady) {
      elapsed = micros() - elapsed  ;
      //Serial.println(elapsed);
      elapsed = micros() ; 
      adc.readChannelData();
//      printStatus();
      printData();
    }
    prev_dataReady= dataReady;
  }
    digitalWrite(cs_Pin, HIGH);
}                                           

void printStatus ()
{
  Serial.print(adc.getStatus(),HEX);
  Serial.print(", ");
}
void printData ()
{
  //Serial.print(0);
  //Serial.print(":");
  Serial.print(adc.getChannelData(0));
  Serial.print(","); 
  Serial.println("");
}

void print8bits(int var) 
{
  for (unsigned int bitpos = 0x80; bitpos; bitpos >>= 1) 
    {
    Serial.write(var  & bitpos ? '1' : '0');
    }
  Serial.println();
}
  
void beattest()
    {
    int beat = (random(70,90));
    display.setCursor(106,46); 
    display.setTextColor(WHITE);                                     
    display.print(beat);
    display.display();
    delay(1000);
    }

If I change the code to

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
//Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);

and in void loop(): put the following code in comment

/*    digitalWrite(OLED_CS, LOW);
    display.clearDisplay();
    display.drawRect(32, 26, 96, 38, WHITE);
    beattest();
    display.display();
    digitalWrite(OLED_CS, HIGH);*/

then the ads1194 works fine but the oled display stays black.
I'm wondering what's going on?