www.beck-ipc.com
www.beck-ipc.comwww.beck-ipc.com  | ImprintImprint
FAQFAQ  | SearchSearch  |
RegisterRegister   |LoginLogin

GC01 touchscreen

Questions and discussions about IPC@CHIP® hardware addons (e.g. FK61-WL01)

GC01 touchscreen

Postby Tom » 13.01.2011, 16:27

Hello,

We use the TX14D14VM1BBA Hitachi display connected to the GC01.
Sometimes we get the remark from the customers that the touch doesn’t always responds well.

We have tested the touchscreen and write debug code in our software where we dump the coordinates to the telnet console. We have noticed that sometimes when we press we get no events in the interrupt handler.
Sometimes we can simulate this problem and it seems that when the EVENT_DOWN event is not fired we get no EVENT_MOVE and EVENT_UP events. When this happens we can move our finger over the touchscreen without getting events.

Is there something we can check ?
Can this be a problem of calibrating the touchscreen ?

Best regards,
Tom

Re: GC01 touchscreen

Postby Jan Schatz » 14.01.2011, 12:21

Hello Tom,

the touch panel delivers two voltages (one for x and one for y direction) which are measured by the GC01. When calibrating the touch, we measure each voltage when the panel is not touched, when the panel is touched at the rightmost/bottommost position and when the panel is touched in the leftmost/topmost position. These values are given to the function gcInitTouch().
At runtime the current voltages are compared to these values. If they are in the right range, we recognise a touch event. Of course if calibration has not been done well, touch events might not work.

You may use the function gcGetTouchPosRaw() to determine the current voltages. When the touch does not work for you compare them to the values passed to gcInitTouch().


Best regards
Jan Schatz
Software Development
Beck IPC GmbH

Re: GC01 touchscreen

Postby Tom » 19.01.2011, 11:39

Hello Jack,

I wrote some additional debug code and have seen that when there is no Irq that’s because the values are almost equal to the values when there is no touch. Like you suggested.
I use the same calibration routine as in the sample program. I have started changing the constants: TOUCH_THRESHOLD, TOUCH_DEBOUNCE_DIFF and TOUCH_SAMPLES.

These are the original calibration values:
[GCLIB]
TOUCH_Y_OFF=-2916
TOUCH_X_OFF=2864
TOUCH_BOTTOMMOST=2276
TOUCH_RIGHTMOST=-2309
TOUCH_TOPMOST=-2242
TOUCH_LEFTMOST=2318

Any suggestions on getting the best results?

Best regards,
Tom

Re: GC01 touchscreen

Postby Jan Schatz » 21.01.2011, 08:48

Hello Tom,

what library and calibration tool versions are you using?
The constants you mention are only used during calibration. They don't influence the touch detection done by the library. So if the calibration values are ok, which seems to be the case, there should be no problem with the calibration.

I'd propose to call the function gcGetTouchPosRaw() in a loop to check the measured value. If you don't touch the panel, something near the TOUCH_?_OFF values should be returned. When you touch, something between TOUCH_BOTTOMMOST and TOUCH_TOPMOST for y should be returned and something between TOUCH_RIGHTMOST and TOUCH_LEFTMOST for x. Be sure you touch the panel firm enough. It's a resistive touch - not like on the iPhone.
Please also check if the problem occurs on more than one device.
Jan Schatz
Software Development
Beck IPC GmbH

Re: GC01 touchscreen

Postby Tom » 21.01.2011, 09:44

Hello Jan,

I wrote debug code: When a touch is detected by the IRQ the values are put in circulaire queue and dumped via telnet. When there is no detection I use telnet to request the values via the gcGetTouchRowPos() function.

Sometimes when there is a touch there is no IRQ. When I invoke the gcGetTouchRowPos() function I can see that the values are near the TOUCH_?_OFF values.
You are right when you say if you touch firm enough a touch is always detected.

The touchscreen we used in an older design was also resistive touch but the detection was more sensitive.The problem is when we upgrade customers with the new display we get remarks that the touchscreen doesn’t detect touch as good as before.

I looked again at the touchscreen calibration routine and started alternating the constant values. By taking more samples and making the Offset value between TOUCH_?_OFFSET and measured value bigger I see the calibration holds other values.

I was hopping when the TOUCH_BOTTOMMOST, TOUCH_TOPMOST, … values are more different from the TOUCH_?_OFFSET values we would get a better result.

Probably this will not solve our problem ?

Best regards,
Tom

Re: GC01 touchscreen

Postby Jan Schatz » 24.01.2011, 08:40

Hello Tom,

Sometimes when there is a touch there is no IRQ. When I invoke the gcGetTouchRowPos() function I can see that the values are near the TOUCH_?_OFF values.
You are right when you say if you touch firm enough a touch is always detected.

In this case I would say this is not a software problem. I'm not really a display expert. Maybe there are also differences between resistive touch panels.


Best regards
Jan Schatz
Software Development
Beck IPC GmbH

Re: GC01 touchscreen

Postby Jan Schatz » 24.01.2011, 09:11

Hello Tom,

find attached the data sheet of the Hitachi TX14D14VM1BBA display. In section 5.2.3 only the maximum pressure (1.2 N) is specified. Unfortunately there is not minimum pressure specification. Maybe you should contact Hitachi to get this value so that you can compare it to your former display.


Best regards
Attachments
HITACHI-5.7_TX14D14VM1BBA.pdf
Data sheet of the Hitachi TX14D14VM1BBA display
(841.34 KiB) Downloaded 397 times
Jan Schatz
Software Development
Beck IPC GmbH

Return to Hardware Addons


Who is online

Users browsing this forum: No registered users and 1 guest


cron