GPS Monitor
eBay Warning
Enterpreneurial eBay sellers, usually based in China are offering devices based on this copyrighted design and software, including links to this page offered as “manual” or “for help” or “support”, without explicit reference or attribution to this site.
I am not associated with any of these operations. They use my design and my software without permission.
While the software is released here, the source code explicitly indicates the GPL copyright. Any use should be in full observance of the GPL rules.
Development Progress
July 12, 2008: The serial routines and message parser work. Only packet 0x8F-AB is being decoded at the moment, it is the Primary Timing Packet. Some of the data in the packet is decoded fine, and some seems to return unexpected values, so troubleshooting continues.
July 13, 2008: v004 is basically working, decoding packets 0x8F-AB and 0x8F-AC. Line 2 of the display has the Disciplining Mode, as defined in the TBolt Manual. Because the LCD is fairly slow, I could not process and display the first packet before the second packet was coming, so I double buffered the receive buffer. Packet 0x8F-AC can be 67 bytes long, so this uses a fair amount of RAM. Now is the time in a project when featureitis typically catches up with me…
July 13, 2008: v008 has all alarms decoded and displayed (in sequence if more than one) on the second line of the display, alternating with the Disciplining Mode. If there is no alarm, the Disciplining Mode is displayed continuously. The zip archive has been fixed, the archive for v004 was missing some files and the Silabs workspace was confused.
July 19, 2008: v010 has two push-buttons and two LEDs. For now, only one push-button is operational, it switches the second display line between Disciplining mode and Receiver mode. I am open to suggestions for other information that could be displayed. I am planning on using the second switch to display DAC voltage or temperature.
July 29, 2008: v012 displays Disciplining Mode, RX Mode, Temperature or DAC voltage on line 2 of the display, by pressing a switch connected between P0.2 and ground.
August 2, 2008: v013 fixed a corruption problem with the VFD (apparently not affecting the LCD). The serial interrupts occurring while the VFD is being addressed apparently cause timing errors that result in corrupted data being displayed. The fix consists of waiting until the end of serial messages to write to the display.
December 28, 2008: v021 is your Christmas present, Dan Karg fixed a problem with his LCD, hopefully making the LCD routines more robust, and I believe I have finally fixed a random corruption issue with the VFD (by making the LCD port push-pull instead of open collector). Also, the display continuously scans a number of parameters on the second line at a 2 second rate. Very nice.
January 1, 2009: v022 has more decimals on the DAC voltage (4 instead of 2) and eliminates a bug in the Temperature and DAC voltage displays.
February 14, 2011: v033 has the capability to apply the GPS offset (currently 15 seconds), time zone offset (source code has time zone offset for US Central time, -6 hours) and Daylight Savings Time. TZ and DST are selectable (ON/OFF) by toggle switches to P0.6 (pin 18) and P0.7 (pin 17) respectively. Grounding these pins causes GPS time to be displayed (as generated by the Thunderbolt). GPS offset is applied automatically when local time is selected (by leaving P0.6 open).
April 8, 2012: v034 reads the GPS offset directly from the Thunderbolt data packet, so the monitor will not need to be updated when a leap second is added, as it is planned for June 2012. Also, this version takes advantage of the 20×2 digit display of the type used by fluke.l and displays the time “zone” (i.e. GPS, or CST, or CDT as appropriate) to the right of the date. The firmware is compatible with 2×16 displays, simply you won't get the time zone info. Finally, the polarity of the two switches has been inverted for compatibility with versions before 033 (by default, with switches open or not connected, displays GPS time). Please note that the GPS offset information may not be available from the Thunderbolt immediately after power up, as it is only sent from the satellites every 12.5 minutes. Until the actual GPS offset information is received by the Thunderbolt, it will be assumed to be zero.
Compiler and Project setup
The Silabs IDE is peculiar about the location of project files. If you use a different directory structure than me, you will get error messages every time you install a new set of files.
I have created and installed all the files for my project here: C:\SDCC\GPSMon\dev
The Compiler is installed in the default location by the SDCC installer: C:\Program Files\SDCC\
Design Considerations
A 2 lines * 16 characters display does not allow to put much information, compared to what is available from the Thunderbolt, so the issue of which information to display came up to me. I will try to determine a strategy and explain it here.
Line 1 (the top line) always displays time/date, unless there is no signal from the Thunderbolt. If there is no signal after about 1 second, an error message is displayed.
Line 2 is used for other information.
The Thunderbolt data packet 0x8F-AC (Supplemental Timing packet) contains four fields of particular interest: Receiver Mode, GPS Decoding, Disciplining Mode and Disciplining Status. Each field is a byte that contains a number reflecting one of up to 9 possible states out of 256 possible values for the field. Other values are not used. This packet also carries temperature and DAC voltage.
The firmware (v0.1.2) is designed to alternate between Disciplining Status, Rx Mode, Temperature and DAC Voltage in sequence when a switch is depressed.
Construction details
Here are some construction details:
The F330 Toolstick needs to be modified as follows:
Remove R8 (this disconnects the potentiometer from the port pin). It is between the pot and the GND solder pad, on the component side.
Connect the wiper pin of the potentiometer to the Contrast input of the LCD (pin 3).
Prototype #2 is built using an older DIP version of the chip and a Radio Shack prototype PWB. It takes about an hour to assemble, only very few additional components are required: 3 generic silicon diodes, a small signal NPN transistor and a few resistors and capacitors.
Other issues