Hello all, I have a FriendlyARM micro2440 equipped with a 7-inch touchscreen (the standard one, AT070TN83). Having played a little with the touchscreen using Qt embedded, I couldn't help but notice that the screen isn't that great when being used with a finger. Unless I press my finger down really hard (unnaturally hard, I might say), I can see that the mouse pointer dances around across half the screen while I move the finger. For example, touch the screen somewhere in the (vertical) middle near the left border and move slowly to the right, the mouse pointer follows my finger horizontally, but jumps up and down erratically, as far up as the upper border of the screen. Is this normal? Do all A70 touchscreens behave this way? Or must it be a defective touchscreen, or perhaps a configuration problem? The ts.conf looks like this module_raw input module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear and of course, I calibrated the touchscreen beforehand using ts_calibrate (multiple times, in fact). I'm using the Pengutronix BSP distribution as OS, by the way. Best regards Michael
7-inch touchscreen: really ugly jitter normal?
Hello again, one more detail of my touchscreen problems: there also is the problem that the mouse pointer points to the correct place on the screen as long as the finger is pressed onto the screen - but as soon as I lift the finger, the pointer jumps up 100 pixels or more. Has anybody else ever seen this behaviour? Thanks again, Michael.
There might be something pushing against the touch pad in the frame. I would take it apart and make sure there is nothing lodged along the edge of the white bezel. Also check for a bump in the plastic and trim it off if you find some. The built in touch panel code that uses the Samsung A/D converters (2440 only) is not very good. The FriendlyARM 6410 and 210 use a high resolution low noise A/D on the back of the LCD and a 1-wire interface. They are rock solid.
I just took the whole thing apart, but there's nothing pressing down on anything. Plus, even disassembled, the mouse pointer still jumps when I press normally onto the touchscreen. I've just programmed a little test in Qt Embedded, where I covered the whole screen with only three pushbuttons (800x160 pixels). When i press the lowest button, almost always the right button is signaled as pressed, same goes for the topmost button. But the one in the middle is recognized as the topmost button roughly once every ten presses, because the mouse pointer jumps way up just at the wrong time. I cannot easily change to the other FriendlyARM boards, so is there any way to get the touch screen of the 2440 board? Is there perhaps another way to connect this or another 7" touch screen to the board without too much hassle? Can anything be done to the drivers to improve this? Any suggestions welcome, Michael.
Hi, at first you may try the attached patch that add a plugin to tslib, namely 'skip'. Purpose is to skip x first and y last event of a touchscreen touch. Those are the ones that makes the pointer jumps because when you press or release the screen the pressure goes through a 'low pressure' step that sends incorrect sensing. (sorry for my poor explanation, it's the best i can do in english). here is my ts.conf module skip nhead=1 ntail=1 #module group radius=10 nbpoints=8 threshold=6 module variance delta=10 module dejitter delta=1000 module linear you may want to play with nhead / ntail params If things are not better, you may experiment with another plugin that i'll post right under this one btw, unwanted pressure on the screen is really disastrous (like explained above by TheRegnirps). This was a nightmare to solve when mounting the display in our own housing without the white bezel. HTH, Laurent
here is the second plugin i talked about It's purpose is to filter touch position so that x points on y consecutives ones are inside a circle of radius z centered in the average of the x points so, if you put in ts.conf the following : module group radius=10 nbpoints=8 threshold=6 It means, 6 out of 8 position must be in a circle of 10 pixels radius in order to pass the position to the next filter other touches are discarded. Don't use it to draw on screen as curves will become lines. Best is to experiment with ts_test to see what i mean. This works pretty well for buttons but requires a longer press time than would be required without this filter. Usually if touchscreen is well calibrated, if skip filter is used and if user is a bit used to the screen i don't need it. good luck, Laurent
sorry to pollute this post, but i thought you'd like to see a nice video that i just remember we made not so long ago : http://www.youtube.com/watch?v=ukcwKs43vRE&feature=plcp Laurent
Hi Laurent, no, I understand completely what you're getting at - that's exactly what I was witnessing. Thanks for the patches, I'm about to recompile tslib and regenerate the rootfs from my Pengutronix BSP package to find out whether that does the trick. Stay tuned for my report. :-) Thanks, Michael
Hello again, unfortunately, I can't test any of the improvements you sent me - after I patched the tslib-1.0 source that Pengutronix includes in its Board Support Package, every Qt programm I try to start (with "-qws" as I have no X11 running) terminates in a "Segmentation fault" as soon as I add either of the two above configuration lines to the ts.conf. Did I do anything wrong? Do I need to use a specific (different) version of the tslib? Frustrated greetings, Michael.
Hi Michael, I'm using ptxdist also. Here is how i did : 1. copy /usr/local/lib/ptxdist-..../patches/tslib-1.0 to /home/laurent/BSP/patches/tslib-1.0 2. also copy /usr/local/lib/ptxdist-..../patches/autogen.sh to /home/laurent/BSP/patches/autogen.sh 3. update /home/laurent/BSP/patches/tslib-1.0/series to include plugin-skip.patch and plugin-group.patch 4. ptxdist clean tslib 5. ptxdist go this take long time because qt is recompiled also (as it depend on tslib). HTH, Laurent