Post Reply 
Flickering screen (no user interaction)
12-19-2019, 07:47 AM
Post: #21
RE: Flickering screen (no user interaction)
Hello,

Yep, I ran the program and I definitely see the flicker!

As you said, it most likely comes from the way the LCD chip handles unsaturated colors... (ie, how it performs the dithering)...

I wonder if increasing the refresh rate will reduce said flicker by speeding up the dithering...

I will do some test today...

Cyrille

Although I work for the HP calculator group, the views and opinions I post here are my own. I do not speak for HP.
Find all posts by this user
Quote this message in a reply
12-19-2019, 01:51 PM (This post was last modified: 12-19-2019 01:57 PM by toml_12953.)
Post: #22
RE: Flickering screen (no user interaction)
(12-19-2019 07:12 AM)Stevetuc Wrote:  
(12-18-2019 11:35 PM)toml_12953 Wrote:  Whew! I was all set to go on another international hunt for the new model! Since it was a only a joke, I can safely put my plastic back. Or use it on "The C64", a Commodore 64 clone.

I'd be very careful if I were you, apparently there is a rev 2 C64 ..https://youtu.be/p3bwYDRk42w

Oh Nooooo! I'm in Rev 2 hell! Smile At least he's talking about the Mini whereas I'm waiting for the US release of the full sized model with a working keyboard. Since we're the last to get the products, usually the bugs have been worked out by the time they're available here. The C64 is location agnostic (all models have both PAL/50Hz and NTSC/60Hz and work off a USB power supply) so I could order from amazon.co.uk but what fun is there in that?

Tom L
I don't care for whom you voted. If you put ice in your beer, you're crazy.
Find all posts by this user
Quote this message in a reply
12-20-2019, 02:08 PM (This post was last modified: 12-20-2019 08:43 PM by wmattias.)
Post: #23
RE: Flickering screen (no user interaction)
Hi!

Thanks Cyrille! I hope you can find a fix or remedy! I think it's really an excellent calculator in a class of its own, but the flickering is very difficult to deal with.

BTW: I updated the program:
- Added a WARNING for people with EPILEPSY. I just found out online that this kind of flickering could potentially trigger a seizure in certain people (~3% epileptics).
- I numbered the test cases and added a few new ones.
- I find it interesting that Test "T8" doesn't appear to flicker (single interleaved pixel) but that "T9" definitely flickers (Double/Triple/Quadruple interleaved pixels).

/Mattias

Code:

EXPORT ScreenTest()
BEGIN

RECT();
TEXTOUT_P("WARNING", 130, 48);
TEXTOUT_P("DO NOT VIEW THIS TEST IF YOU ARE", 30, 48+32);
TEXTOUT_P("EPILEPTIC", 130, 48+80);
TEXTOUT_P("THE FLICKERING MAY TRIGGER A SEIZURE", 10, 48+128);
WAIT(-1);


// Multiple Horizantal Lines in Light Blue + White
RECT();
C:=RGB(200,200,255);
FOR Y FROM 0 TO 239 STEP 2 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T1: Flicker", 140, 110);
WAIT(-1);

// Multiple Horizontal Lines in Light+Darker Blue
RECT();
C:=RGB(100,100,200);
FOR Y FROM 0 TO 239 STEP 2 DO
  LINE_P(0,Y,320,Y,C);
END;
C:=RGB(200,200,255);
FOR Y FROM 1 TO 239 STEP 2 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T2: Flicker", 140, 110);
WAIT(-1);

// Single Horiz Line
C:=#DDDDDDh;
RECT();
LINE_P(0,120,320,120,C);
TEXTOUT_P("T3: Line Flickers", 20, 180);
WAIT(-1);

// Graph Example
C:=#DDDDDDh;
C:=RGB(192,192,192);
RECT();
FOR Y FROM 0 TO 239 STEP 5 DO
  LINE_P(0,Y,320,Y,C);
END;
FOR X FROM 0 TO 319 STEP 5 DO
  LINE_P(X,0,X,240,C);
END;
LINE_P(0,120,320,120,0);
LINE_P(160,0,160,240,0);
TEXTOUT_P("T4: Grid Flickers", 20, 180);
WAIT(-1);

// Multiple Horizontal Lines in Fully Saturated Blue
RECT();
C:=RGB(0,0,255);
FOR Y FROM 0 TO 239 STEP 2 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T5: No Flicker", 130, 110);
WAIT(-1);

// Solid Light Blue
C:=RGB(200,200,255);
RECT();
FOR Y FROM 0 TO 239 STEP 1 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T6: No Flicker", 130, 110);
WAIT(-1);

// Split Screen
RECT();
FOR Y FROM 0 TO 239 STEP 2 DO
  LINE_P(0,Y,160,Y,C);
  LINE_P(161,Y,319,Y,#000000);
END;
TEXTOUT_P("T7: Flicker", 40, 110);
TEXTOUT_P("T7: No Flicker", 200, 110);
WAIT(-1);

// White pixels surrounded by Blue
// BBBBBBB
// B B B B
// BBBBBBB
// B B B B
// BBBBBBB
C:=RGB(200,200,255);
RECT();
FOR X FROM 0 TO 319 STEP 2 DO
  LINE_P(X,0,X,240,C);
END;
FOR Y FROM 0 TO 239 STEP 2 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T7: Flicker", 140, 110);
WAIT(-1);

// White/Blue Pixels (Diagonal Lines)
//  B B B 
// B B B B
//  B B B 
RECT();
C:=#DDDDDDh;
C:=RGB(200,200,255);
FOR Y FROM 0 TO 239 STEP 1 DO
  IF even(Y) THEN X0:=0; ELSE X0:=1; END;
  FOR X FROM X0 TO 319 STEP 2 DO
    PIXON_P(X,Y,C);
  END;
END;
TEXTOUT_P("T8: No Flicker", 130, 110);
WAIT(-1);

// White/Blue Pixels (Increasing Spacing)
// BB  BB  BB 
//   BB  BB 
// BB  BB  BB 
RECT();
C:=RGB(200,200,255);
FOR Y FROM 0 TO 239 STEP 1 DO
  IF even(Y) THEN X0:=0; ELSE X0:=1; END;
  FOR X FROM (0+X0) TO 80 STEP 2 DO
    PIXON_P(X,Y,C);
  END;
  IF even(Y) THEN X0:=0; ELSE X0:=2; END;
  FOR X FROM (80+X0) TO 159 STEP 4 DO
    PIXON_P(X,Y,C);
    PIXON_P(X+1,Y,C);
  END;
  IF even(Y) THEN X0:=0; ELSE X0:=3; END;
  FOR X FROM (160+X0) TO 239 STEP 6 DO
    PIXON_P(X,Y,C);
    PIXON_P(X+1,Y,C);
    PIXON_P(X+2,Y,C);
  END;
  IF even(Y) THEN X0:=0; ELSE X0:=4; END;
  FOR X FROM (240+X0) TO 319 STEP 8 DO
    PIXON_P(X,Y,C);
    PIXON_P(X+1,Y,C);
    PIXON_P(X+2,Y,C);
    PIXON_P(X+3,Y,C);
  END;
END;
TEXTOUT_P("T9: 3 of 4 Flicker", 0, 0);
WAIT(-1);

// White/Blue Pixels (Increasing Spacing)
// BB  BB  BB 
//   BB  BB 
// BB  BB  BB 
RECT();
C:=RGB(0,0,0);
FOR Y FROM 0 TO 239 STEP 1 DO
  IF even(Y) THEN X0:=0; ELSE X0:=1; END;
  FOR X FROM (0+X0) TO 80 STEP 2 DO
    PIXON_P(X,Y,C);
  END;
  IF even(Y) THEN X0:=0; ELSE X0:=2; END;
  FOR X FROM (80+X0) TO 159 STEP 4 DO
    PIXON_P(X,Y,C);
    PIXON_P(X+1,Y,C);
  END;
  IF even(Y) THEN X0:=0; ELSE X0:=3; END;
  FOR X FROM (160+X0) TO 239 STEP 6 DO
    PIXON_P(X,Y,C);
    PIXON_P(X+1,Y,C);
    PIXON_P(X+2,Y,C);
  END;
  IF even(Y) THEN X0:=0; ELSE X0:=4; END;
  FOR X FROM (240+X0) TO 319 STEP 8 DO
    PIXON_P(X,Y,C);
    PIXON_P(X+1,Y,C);
    PIXON_P(X+2,Y,C);
    PIXON_P(X+3,Y,C);
  END;
END;
TEXTOUT_P("T10: No Flicker", 0, 0);
WAIT(-1);

// Color Comparison
RECT();
Y:=20;
LINE_P(0,Y,320,Y,#DDDDDDh); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(192,192,192)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(128,128,128)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(64,64,64)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(0,0,0)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(100,100,200)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(192,192,192)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(255,200,200)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(200,255,200)); Y:=Y+10;
LINE_P(0,Y,320,Y,RGB(200,200,255)); Y:=Y+10;
TEXTOUT_P("T11: Some Lines Flicker", 20, 220);
WAIT(-1);

// Spacing Comparison
RECT();
C:=RGB(192,192,192);
Y:=20;
FOR I FROM 0 TO 9 DO
  FOR N FROM 0 TO I DO
    LINE_P(0,Y+N,320,Y+N,C);
  END;
  Y:=Y+10;
END;
LINE_P(0,179,320,179,0);
FOR Y FROM 180 TO 240 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T12: Some Flicker", 20, 140);
WAIT(-1);

// 2 Grey + 1 White
RECT();
C:=RGB(192,192,192);
FOR Y FROM 0 TO 239 STEP 3 DO
  LINE_P(0,Y,320,Y,C);
  LINE_P(0,Y+1,320,Y+1,C);
END;
TEXTOUT_P("T13: Flicker", 0, 0);
WAIT(-1);

// 2 Grey + 2 White
RECT();
C:=RGB(192,192,192);
FOR Y FROM 0 TO 239 STEP 4 DO
  LINE_P(0,Y,320,Y,C);
  LINE_P(0,Y+1,320,Y+1,C);
END;
TEXTOUT_P("T14: Light Flicker?", 0, 0);
WAIT(-1);

// 3 Grey + 1 White
RECT();
C:=RGB(192,192,192);
FOR Y FROM 0 TO 239 STEP 4 DO
  LINE_P(0,Y,320,Y,C);
  LINE_P(0,Y+1,320,Y+1,C);
  LINE_P(0,Y+2,320,Y+2,C);
END;
TEXTOUT_P("T15: Flicker", 0, 0);
WAIT(-1);

// Some Color Tests
RECT();
A:=RGB(64,64,64);
B:=RGB(96,96,96);
C:=RGB(128,128,128);
D:=RGB(160,160,160);
FOR Y FROM 0 TO 239 STEP 2 DO
  LINE_P(0,  Y, 79,Y, A);
  LINE_P(80, Y,159,Y, B);
  LINE_P(160,Y,239,Y, C);
  LINE_P(240,Y,319,Y, D);
END;
TEXTOUT_P("T18: Flicker", 0, 0);
WAIT(-1);

// Dark Grey Test
RECT();
C:=RGB(64,64,64);
FOR Y FROM 0 TO 239 STEP 4 DO
  LINE_P(0,Y,320,Y,C);
END;
TEXTOUT_P("T19: Light Flicker", 0, 0);
WAIT(-1);

RECT();
TEXTOUT_P("Test Finished", 120, 110);
FREEZE;
END;
Find all posts by this user
Quote this message in a reply
12-20-2019, 05:09 PM (This post was last modified: 12-20-2019 05:28 PM by Tim Wessman.)
Post: #24
RE: Flickering screen (no user interaction)
There is no way that flicker can do what you think it might... No need for any sort of message.

So it looks like the problem is deep in the way the IC updates the screen (small grids of 8 pixels roughly with randomness scattering throughout the smaller grid). Upping the refresh rate can really reduce it, but never *completely* eliminate it. Slightly concerned about battery impact, but probably minimal. May push out a version to test...

TW

Although I work for the HP calculator group, the views and opinions I post here are my own.
Find all posts by this user
Quote this message in a reply
12-20-2019, 05:28 PM
Post: #25
RE: Flickering screen (no user interaction)
Those tests all show off exactly the flicking I've been seeing. Can we get lucky enough to have a 90hz refresh rate display on a calculator? Tongue

Hey wmattias, could you please edit your posts so your code is within [code.] [/code] blocks? It'll prevent your post size from being so massive. Wink

Cemetech | YouTube
Visit this user's website Find all posts by this user
Quote this message in a reply
12-20-2019, 08:42 PM (This post was last modified: 12-20-2019 08:47 PM by wmattias.)
Post: #26
RE: Flickering screen (no user interaction)
(12-20-2019 05:09 PM)Tim Wessman Wrote:  May push out a version to test...

That would be excellent! Would love to try it.

(12-20-2019 05:09 PM)Tim Wessman Wrote:  There is no way that flicker can do what you think it might... No need for any sort of message.

Well, I'm no doctor but I'm not so sure - When I told a friend about the flickering, he warned me and referred me to the UK Epilepsy Society:

"Possible triggers if you have photosensitive epilepsy
- Flashing or flickering lights or images between 3 and 60 hertz (flashes per second).
- A contrasting dark and light geometric pattern, such as black and white stripes or checks."

Link: https://www.epilepsysociety.org.uk/photo...e-epilepsy

Which was pretty close in nature to the test program.

I had to google screen size though, but information was scarce. Maybe not a fair comparison for this case, but it's recommended that you should sit at least >8 feet (96 inches) from TVs if you are susceptible. Assuming the TV is 24" (which was a common size in 1994 when the study was done), that would mean that (96/24) => 4x the diagonal away from the screen. The HP Prime screen is 9 cm => 4*9 cm => 36 cm minimum distance. Depending on your eyesight, you could well end up within this distance.

"In their major monograph, Harding and Jeavons (3) made six recommendations for precautions to be taken by people who are sensitive to flickering lights. These were as follows:
1 View TV from ≥8 feet;
"

Link: https://onlinelibrary.wiley.com/doi/full...31405.x#b3

Anyway, better safe than sorry...
Find all posts by this user
Quote this message in a reply
12-21-2019, 08:06 AM (This post was last modified: 12-21-2019 08:08 AM by Stevetuc.)
Post: #27
RE: Flickering screen (no user interaction)
(12-18-2019 05:23 AM)TheLastMillennial Wrote:  I also think the flickering is very noticeable. I even mentioned it in my massive review. I thought it was of low refresh rate, but 55hz should be more than enough to not see it with the naked eye. Perhaps something else is going on? I also have a G2 on the latest beta. This has been an issue ever since I got my Prime.

Maybe the issue is aliasing. If the prime has a 55Hz refresh rate and the mains is either 50 or 60 Hz then the alias is the 5Hz difference or beat freq. That would be noticeable ( in artificial light but not sunlight).
Find all posts by this user
Quote this message in a reply
12-21-2019, 10:19 AM
Post: #28
RE: Flickering screen (no user interaction)
(12-21-2019 08:06 AM)Stevetuc Wrote:  
(12-18-2019 05:23 AM)TheLastMillennial Wrote:  I also think the flickering is very noticeable. I even mentioned it in my massive review. I thought it was of low refresh rate, but 55hz should be more than enough to not see it with the naked eye. Perhaps something else is going on? I also have a G2 on the latest beta. This has been an issue ever since I got my Prime.

Maybe the issue is aliasing. If the prime has a 55Hz refresh rate and the mains is either 50 or 60 Hz then the alias is the 5Hz difference or beat freq. That would be noticeable ( in artificial light but not sunlight).

It could be, but for this case it’s not related to artificial lightning/aliasing/strobing.

I haven’t seen the hardware, but from the behavior it looks like issues with FRC (Frame Rate Control) which is a technique to overdrive/boost the number of perceivable colors from a TFT screen by basically changing the color a bit each re-draw. That can result in flickering at half the refresh rate (or even lower depending on how it’s done).
Find all posts by this user
Quote this message in a reply
12-23-2019, 06:13 PM (This post was last modified: 12-23-2019 06:22 PM by ijabbott.)
Post: #29
RE: Flickering screen (no user interaction)
(12-19-2019 01:51 PM)toml_12953 Wrote:  
(12-19-2019 07:12 AM)Stevetuc Wrote:  I'd be very careful if I were you, apparently there is a rev 2 C64 ..https://youtu.be/p3bwYDRk42w

Oh Nooooo! I'm in Rev 2 hell! Smile At least he's talking about the Mini whereas I'm waiting for the US release of the full sized model with a working keyboard. Since we're the last to get the products, usually the bugs have been worked out by the time they're available here. The C64 is location agnostic (all models have both PAL/50Hz and NTSC/60Hz and work off a USB power supply) so I could order from amazon.co.uk but what fun is there in that?

I got my full size "The C64" today. You'll be pleased to learn that Norbert Kehrer's C64 port of the Atari Calculator (CX8102) by Carol Shaw runs fine on this machine!

— Ian Abbott
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)