     bklightstate = backlight(bklightstate) ;
 #endif
 
-   // update the display 
-   if ( forcedisplay ||  (millis() - lastupdatedisplay) > UPDATE_DISPLAY ) {
-         lastupdatedisplay = millis() ;
-         forcedisplay = false ;
+    // update the display
+    unsigned long t = millis();
+    if ((forcedisplay > 0 && forcedisplay + 3000 < t && forcedisplay + 3000 > lastupdatedisplay) || (t - lastupdatedisplay) > UPDATE_DISPLAY) {
+        lastupdatedisplay = t;
+        forcedisplay = 0;
 
          sprintf(buf,"s:%d r:%d",sent_count,recv_count) ;
          mylog.send(buf) ;

unsigned long lastupdate = 0 ;
unsigned long lastupdatedisplay = 0 ;
unsigned long lastgpsupdate = 0 ;
bool forcedisplay = false ;


int sent_count=0 ;

         // update gps led

         digitalWrite(LED_GPS,gps.location.isValid()) ;
    }
}
