LCD flickering on 2v06 (but not 2v05)

Posted on
  • I am not sure whether I should post here or on GitHub issues, and apologies if this has already been discussed.

    I have uploaded 2v06 onto my watch, and noticed that the screen flickers very badly with any LCD brightness level that is less than 1. I understand that, in principle, this is due to accel/gyro polling that interferes with software PWM, because doing Bangle.setPollInterval(4000) does remove the flickering.

    What confuses me, though, is that on firmware 2v05.1 there was absolutely no noticeable flickering with any level of brightness > 0.1. I switched between 2v05.1 and 2v06 several times to make sure that this is reproducible, and it is. Also, this behavior doesn't seem to depend on the app that is currently running. It does happen when the watch is idle.

    I've also noticed that on 2v06, if I execute Bangle.setLCDBrightness(), every once in a while the screen will stop flickering - until the next call to Bangle.setLCDBrightness(), with the same argument, which brings the flickering back. There seems to be no pattern. I can call Bangle.setLCDBrightness() ten times in a row, with the same argument, and one of these calls will remove the flickering.

    I wonder if there might be an issue with 2v06 that is causing this behavior?

  • Thanks - just tried this and you're right.

    It's great to post in the forum first - it saves adding a lot of issues to the main Espruino repo that may not be related to the firmware. I think in this case it is though! I've just added an issue at­ues/1925

    I don't have time to sort this out just now as I'll be away next week but I'll try and check on my return. It could be timer handling but I guess it's also possible that the interrupt handler for the accelerometer is taking too long now.

  • ... Having said that, I just tried on a cutting edge build from¬≠master/ and flickering is far, far lower.

    BUT it looks like something else is broken - see the issue linked above. I'll get on this when I return.

  • Thank you! I just saw the commit fixing the arbitration error, and tried 2v06.122. The flicker is mostly gone (as is the broken behavior of the previous cutting edge build that was apparently related to arbitration error). However, if I call setLCDBrightness() enough times, the flicker does come back eventually, and stays until (a) the next call to setLCDBrightness(), or (b) the next time the screen turns off and back on.

  • So I have 2v06.123 installed and I can confirm flickering is much better but when changing the LCD brightness level it does flicker at least once every 5 changes if level. I also got a buffer full error and a random menu item disappeared which may or may not be linked but thought it'd be worth reporting. Image attached to show the error and missing menu item.

    1 Attachment

    • IMG_20200906_210212.jpg
  • Ok, I've just committed some changes that should really help with this - but you still do see some flicker when Bluetooth jumps in and needs to do something (I don't think that can easily be avoided).

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

LCD flickering on 2v06 (but not 2v05)

Posted by Avatar for Evgeny @Evgeny