Speed, Accuracy and Usability
     We ran into a host of problems when starting this project, some of which should be noted for future teams. Originally, we had planned to use WinAVR, an open source GCC compiler for the AT Mega platform. However, we realized that this compiler was generating absolute garbage for its assembly output. After seeking help from newsgroups, bulletins, Professor Land, the TA's, and even former 476er's, no one was able to come up with a possible reason as to why this compiler just plain didn't work! Specifically, functions would only work when declared as inline, which essentially indicates some sort of bug in the register file or stack. After 1.5 weeks of tedious debugging and assembly code reading, we gave up and reverted to CodeVision.
     Thankfully, we had the foresight to split up the project once we saw this bug. One of us worked on the components (whose interface is basically compiler independent) and the other worked on the code and compiler. Therefore, even though we encountered this enormous failure, we weren't entirely stuck.
     The choice to use an ATMega128 was most definitely a good one. Its dual UARTs made it the ideal chip for debugging, as GPS constantly tied up one of the UART lines. Also, its multitude of IO pins allowed us to make our design flexible, so as we discovered problems, we had room to expand and work with.
     Also, as another point of advice, use the oscilloscope as much as humanly possible. This tool proved invaluable to our debugging process, as it turns out, the GPS implements RS232 backwards of the "standard". If we had not used the scope, it would have taken us much longer to figure out that the signals were inverted! Also, tracing analog noise and characterizing its frequency is made easy on the newer digital scopes. We could target our dominant noise frequency almost exactly and eliminate it from our A/D readings.
    The LCD we used turned out to be very nice. The screen is simply beautiful, the characters are clear even at very small font sizes. If we had a larger budget, a text+graphic LCD would have saved lots of code, but it was fun to implement the library none the less. We think the UI turned out very good. We were lucky in that we had a scope at our disposal almost all the time. In its absence, we would definitely recommend many debug LED's to help solve code problems.
    Although a good portion of our design worked well, not everything turned out as planned. Specifically, the integration of the gyros and accelerometers with GPS proved to be far to taxing to be done properly on the ATMega128. If we had more floating point "horsepower", the filter would have worked much better. However, with the 128, the calculations could only be performed at about 20hz, so the filter diverged very quickly (less than 2 seconds in losing GPS). Additionally, the MEMS sensors had much more noise than we had original planned for. This is most likely due to the lack of PCB's and not as much care taken for noise immunity as is needed. Thermal consideration also would have helped the gryos. For these reasons we disabled the gyro/accel integration for the demo.  Also, the LCD takes a long time to draw to, almost 100ms. This was solved by updating the screen only every 20 frames, but it still would have been nice to have the full update speed. 


Task List


Graphic LCD Crystalfontz 

 $            24.00

AT Mega Riser Board

 $              8.00

Radioshack PCB

 $              5.00

7400 Inverter

 $              1.00

Misc. Discrete Components

 $              5.00


$               5.00


 FREE *sampled 


 FREE *sampled 

GPS Receiver

 FREE *owned 

AT Mega 128

 FREE *sampled 




 $            48.00

The IEEE Code of Ethics

2. to avoid real or perceived conflicts of interest whenever possible, and to disclose them to affected parties when they do exist;

GPS itself has all sorts of very strong implications, the thought of knowing where someone is at all times is bothersome to many. And for national defense, GPS can be seen as a threat. However, the government uses its SA (selective ability) code to encrypt GPS during times of trouble, so this threat is minimal. Our device is not nearly accurate enough over time to make this be a problem.

3. to be honest and realistic in stating claims or estimates based on available data;

Our report has been honest to the best of our knowledge. We relied on the claims of the manufacturers for the inertial sensors and verified their accuracy or lack there of in our implementation.

4. to reject bribery in all its forms;

No bribery was performed, we promise!

7. to seek, accept, and offer honest criticism of technical work, to acknowledge and correct errors, and to credit properly the contributions of others;

We have referenced all our papers and datasheets in the next section. All of our code was original, so there was no real credit to be dealt.