diff --git a/libraries/AP_GPS/AP_GPS_SIRF.cpp b/libraries/AP_GPS/AP_GPS_SIRF.cpp index 9daceafb4a..97e686e9e6 100644 --- a/libraries/AP_GPS/AP_GPS_SIRF.cpp +++ b/libraries/AP_GPS/AP_GPS_SIRF.cpp @@ -170,7 +170,9 @@ AP_GPS_SIRF::_parse_gps(void) longitude = _swapl(&_buffer.nav.longitude); altitude = _swapl(&_buffer.nav.altitude_msl); ground_speed = _swapi(&_buffer.nav.ground_speed); - ground_course = _swapi(&_buffer.nav.ground_course); + // at low speeds, ground course wanders wildly; suppress changes if we are not moving + if (ground_speed > 50) + ground_course = _swapi(&_buffer.nav.ground_course); num_sats = _buffer.nav.satellites; break; } diff --git a/libraries/AP_GPS/examples/GPS_406_test/GPS_406_test.pde b/libraries/AP_GPS/examples/GPS_406_test/GPS_406_test.pde index 72ecab4df6..8ffadd5680 100644 --- a/libraries/AP_GPS/examples/GPS_406_test/GPS_406_test.pde +++ b/libraries/AP_GPS/examples/GPS_406_test/GPS_406_test.pde @@ -18,8 +18,10 @@ AP_GPS_406 gps(&Serial1); void setup() { - Serial.begin(38400); - Serial1.begin(57600); + tone(A6, 1000, 200); + + Serial.begin(38400, 16, 128); + Serial1.begin(57600, 128, 16); stderr = stdout; gps.print_errors = true;