SparkFun Forums 

Where electronics enthusiasts find answers.

Questions &/or issues related to products in the Miscellaneous category should be posted in this forum. For Kits, please post in the Kits forum.
#207480
Using myGPS.enableRTCMmessage commands shown on web page and in the example from the library unit responds per code with:
Survey valid!
RTCM messages enabled
Base survey complete! RTCM now broadcasting.

BUT does not output corrections. Added trouble shooting prints as shown:
Moderator edit to add code formatting.
Code: Select all
void loop()
{
   boolean response;
response = true;
  myGPS.checkUblox(); //See if new data is available. Process bytes as they come in.
response &=  myGPS.checkUblox();

if (response)
  Serial.println("7 Connected!");
else
  Serial.println("7 Failed!");
  Serial.println(myGPS.checkUblox());
Serial.println("frame counter");
   uint16_t rtyyz = 1;
Serial.println(rtyyz);
rtyyz = myGPS.rtcmFrameCounter;
Serial.println(rtyyz);
  delay(250); //Don't pound too hard on the I2C bus
  // this works toforce call the library
SFE_UBLOX_GPS xxyyz;
uint8_t incoming55;
xxyyz.processRTCM(incoming55); 
Serial.println("Should have process");
delay(1000);
}
and trouble shoot prints to library call as shown:

//This function gets called from the SparkFun Ublox Arduino Library.
//As each RTCM byte comes in you can specify what to do with it
//Useful for passing the RTCM correction data to a radio, Ntrip broadcaster, etc.
void SFE_UBLOX_GPS::processRTCM(uint8_t incoming)
{
  //Let's just pretty-print the HEX values for now
  if (myGPS.rtcmFrameCounter % 16 == 0) Serial.println("5");
  Serial.println(" 6");
  if (incoming < 0x10) Serial.println("7");
  Serial.println(incoming, HEX);
   Serial.println("Should have output data");
}
prints to terminal show:
Press x to end survey - Time elapsed: 534 Accuracy: 2.00
Survey valid!
RTCM messages enabled
Base survey complete! RTCM now broadcasting.
7 Connected!
1
frame counter
1
0
5
6
7
0
Should have output data

Note frame counter print as shown in code:
Serial.println("frame counter");
uint16_t rtyyz = 1;
Serial.println(rtyyz);
rtyyz = myGPS.rtcmFrameCounter;
Serial.println(rtyyz);

show 0 bytes in frame counter AND incoming from

void SFE_UBLOX_GPS::processRTCM(uint8_t incoming)

shows 0 bytes. I assume this is the problem but can't figure out how to fix.

Please help. I need this thing to put out correction data.
#207555
Hi Jerry,

If you are using Example 2-Start RTCM Base I am pretty sure this is related to this closed issue on the GitHub repository.

It looks like the NEO-M8P example needs updating to send the RTCM data out over I2C but if you edit this line:
Code: Select all
myGPS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)
to this:
Code: Select all
myGPS.setI2COutput(COM_TYPE_UBX | COM_TYPE_RTCM3);
that should fix the issue and you should see RTCM data over I2C and printing the hex values in your serial monitor.

Let me know if you are still having trouble with this after trying this fix and we can troubleshoot further.