PA6H/MT3339 GPS: how to know if time is GPS locked or from internal RTC?

Image embedded for our convenience:

Technique described here.

In the picture attached you can see the signal on the oscilloscope at power on...

In the signal from GPS, I read in the oscilloscope:
$GPGSV,3,2,10,20,41,.....

Excellent! I'm so glad you can scope this out. This confirms that :

  • The sketch is sending the PMTK configuration command to turn on the GSV sentences.

  • The GPS device receives it correctly on the GPS RX pin.

  • The GPS device is sending GSV sentences.

  • The GPS device can see 10 satellites (3rd field in the GSV sentence).

This eliminates the most common problems. Next:

Now I'm reading:
3 dtsat:4/0
3 dtsat:4/0
near the window.

This shows:

  • the status (3, a good fix),

  • date/time are valid (from RMC and GGA sentences),

  • 4 satellites were used to calculate the current fix (according to the GGA sentence), and

  • 0 satellites were tracked in the gps.satellites[] array.

The first 3 are good. The last one, 0 satellites in the array, is bad.

Since you know the GPS device is sending the GSV sentences, either:

  • the 328 is not receiving anything from the GPS device, or

  • the 328 is receiving GPS characters, but it is not parsing the GSV sentences correctly.

It must be the latter. Are you sure that this line is uncommented?

#define NMEAGPS_PARSE_GSV

NeoGPS will ignore $GPGSV sentences unless this #define is uncommented.

Make sure there are no NeoGPS files in your sketch directory. Having a NeoGPS config file in the sketch directory can make bad things happen. You must modify the config files in the Libraries/NeoGPS/src directory.

Cheers,
/dev