Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Touchscreen HOW?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
KMihail
Есть отладочная плата olimex sam9-l9261 (кострат от atmel at91sam9261ek). На ней был дисплей с тачскрином, задача в том чтобы поставить дисплей и тачскрин большего размера (было 320х240 надо 640х480). С дисплеем разобрались а вот с тачем есть проблема. Итак контроллер ADS7843e и его настройки в ядре таковы (ядро 2.6.36):
static struct ads7846_platform_data ads_info = {
.model = 7843,
.x_min = 350,
.x_max = 3530,
.y_min = 390,
.y_max = 3530,
.x_plate_ohms = 450, /* 350 (450) ? */
.y_plate_ohms = 250, /* 600 (250) ? */
.pressure_max = 15000,
.debounce_max = 5,
.debounce_rep = 0,
.debounce_tol = 50,
.get_pendown_state = ads7843_pendown_state,
};
Сам тач n010-0554-t009 (fujitsu). Вопрос первый - какие из этих цифирек зависят от того какой тач я к этому контроллеру подключаю (найти их внятного описяния я не смог)?

Далее есть tslib с такими настройками:
module_raw input grab_events=1
module pthres pmin=4
module variance delta=50
module dejitter delta=50
module linear

И под финал всего собрана с этой tslib Qt 4.6.3. Из неё взят пример qws/mousecalibration с помощью которого и проверяется результат работы устройства:
# export QWS_MOUSE_PROTO=tslib:/dev/input/event1
# /root/mousecalibration -qws

Итог мой печален: После калибровки вертикальная кордината при нажатии на одну и туже точку хоть как-то локализована, а вот горизонтальная прыгает по всему экрану (от левого до правого края). Я конечно понимаю что еще ничего толком не настроено, но компонентов так много что не знаешь с какой стороны подходить и что копать. Может кто поможет дельным советом как начать копать в правильном направлении?
alexf
У меня стоит touchscreen 640x480 ads7846. Процессор OMAP3530 но это не важно. Если одна координата прыгает, похоже переполнение. Т.е. значение больше чем MAX интерпретируется как маленькое. Например у меня работает такое:

struct ads7846_platform_data ads7846_config = {
.x_max = 0x0fff,
.y_max = 0x0fff,
.x_plate_ohms = 180,
.pressure_max = 255,
.debounce_max = 10,
.debounce_tol = 3,
.debounce_rep = 1,
.get_pendown_state = ads7846_get_pendown_state,
.keep_vref_on = 1,
.settle_delay_usecs = 150,
.wakeup = true,
};

В любом случае ответ в попугаях а TSLIB преобразует после калибровки по очень общей формуле

X = ax+by+c
Y = dx+ey+f

Даже если оси перепутаны и полярность обратная, все равно будет работать.

А точный смысл констант надо смотреть в сорсах драйвера.
KMihail
У меня есть проблема заключающеяся в том что:
y - меня меряется походу нормально ( правда есть дребезг его значения )
х - а вот эта штуковина у меня меряется судя по всему как f(y)! и никакие линейные преобразования при калибравке не работают. Что может вызывать такой эффект на означенном контроллере.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.