John and I managed to track down a bizarre error. We discovered that from revision 68 to 69, a change was introduced in the port configuration that revealed a manufacturing defect in the controller board PCB. One of PORTA's pins was shorted to one of the PWM output pins. Up until r69, PORTA had been configured as all-inputs, but when the software was changed to set PORTA to all-outputs, it was preventing the PWM channel from reaching 5 V (I'm glad we didn't damage anything).
This seemed to cause the motor to run rough up to a speed of about 4 increments on the joystick (PWM duty cycle value 20).
Anyway, we worked around that by not setting that pin to be an output, and then went on to find the actual code that had been used for Round 2—it was on my older PowerBook, and had not been checked in (bad Rick!), so it took a bit of finagling to get Subversion to accept it.
The next steps are to add in the derivative term, speed up the control loop, and tweak on the courtyard track in Cory. I also want to get our ZigBee link working, and I need build a new sensor board (I hate perfboard!). NatCar is on Friday, and we have a lot to do to be competitive.
Here's hoping the card keys still work…