-1

I am using an external ADC (via SPI) and also a GPS receiver (Software Serial). I tried each one of them and it's working fine. Now, when I try to integrate both of them in one sketch, I can only make the ADC work, the GPS is not receiving something.

void setup()
{
  pinMode(ADS1220_CS_PIN, OUTPUT);
  pinMode(ADS1220_DRDY_PIN, INPUT);

  Serial.begin(115200);
  ss.begin(9600);

  //while(!Serial);
  //SPI.begin();                           // wake up the SPI bus.
  //SPI.setBitOrder(MSBFIRST);
  //SPI.setDataMode(SPI_MODE1);

  //ADS1220.begin();
  Wire.begin();
  delay(1000);  // Give things time to "warm-up"

  delay(1000);
  pre_time = millis(); //store current time to be used as "previous" time
}

I found out that in the setup(), when I comment out all those SPI functions, the GPS returns something. What seems to be wrong with this? thank you so much for any help

Ralph
  • 157
  • 1
  • 2
  • 9

3 Answers3

2

SoftwareSerial is very inefficient. AltSoftSerial is best. See this answer for a complete list of alternatives.

You may want to look at my NeoGPS library. It is smaller, faster and more accurate than all other libraries. The examples are structured better. You don't show your whole sketch -_-, but the loop structure could be your real problem. Be sure to read the Troubleshooting page for more suggestions.

slash-dev
  • 2,029
  • 13
  • 12
1

I managed to solve this just by changing the Rx pin to digital pin 4 from digital pin 10, I don't know what causes the problem but it did the job for me

Ralph
  • 157
  • 1
  • 2
  • 9
-1

For the Arduino to be SPI master, the SS pin (D10) must be an output. Using it as software serial input (Rx) is no good. If you had used it as the Output, Tx, you would likely have been ok. I try to use 10 as SS for the first SPI device I have connected all the time to avoid that pitfall.

CrossRoads
  • 2,449
  • 7
  • 9