Ви будете смеяться но все с точностью до наоборот :) достаточно взглянуть на код:
Как можно увидеть - когда приходит прерывание во первых эти прерывания от penirq запрещаются и запускается системный таймер не блокирующий процесс - мы тут же отдаем управление системе. По завершении выдержки таймера ядро вызывает ф-ию-обработчик ads7846_timer где и проверяется состояние pendown
Это как раз и есть защита от дребезга - на осцилле Павел видел мочалку из чередующих 0 и 1 что приводило к моментальному зависанию системы - прерывания шли одно за другим, в моем случае при приходе первого _всегда_ на время таймера отключаются прерывания.
По поводу всего остального - нужно калибровать тачскрин, в составе libts есть утилитка calibrate помоему называется. Нужно запустить ее и следовать указаниям - потыкать на крестики появляющиеся, калибровочные коэффициенты она потом запоминает сама. В приложениях нужно указывать что работать им нужно через libts - практически все понимают ее. Если использовать стандартное устройство ввода - указатель бегает в противоположную сторону от того куда ты ему показываешь :)
понятно. буду завтра допиливать. или не завтра. а вот libts мне, видимо, не пригодится. заказчик самописный GUI рисует. пяток кнопок на экране не требуют для себя полновесных Х-ов.
По поводу загрузки системы, вот top загрузки если непрерывно возить по экрану лапой :)
Вот наш нагрузитель:
399 2 root RW< 0 0.0 0 3.1 [spi_gpio.3]
что неудивительно - наш "контроллер" вовсю старается програмно колотить лапками передавая текущие координаты, но даже при этом это всего 3 %. В реальных условиях работы загрузки от него вообще не видно.
запускаю ts_calibrate, калибрую. записываю в /usr/local/etc/pointercal выданные цифирки. а ts_test не хочет рисовать, и читает не отмасштабированные данные. а те, которые я ему в ABS_X, ABS_Y сую. поправил вывод в драйвере тачскрина.
x = 480 - (x * 480 / 4096)
демка стала работать корректно. почти. т.к. начало тачскрина 30х30, а начало экрана 0х0. как заставить tslib отдавать откалиброванные данные. и как пользоваться этой либой?
Насколько я помню - никуда никакие настройки не сохранял - все само подхватывалось. Сам я с ее помощью ничего не писал - пользовался готовым, иксы и qt работали на "ура". В иксах gtk-ые приложения работали корректно, что неудивительно - они все равно через xlib работают. Там помоему нужно прописать переменные окружения только - через какое устройство работать tslib - у меня event0 или input0 было - я не помню, счас пока чисто с консолью вожусь а старые конфиги похерил все к сожалению, только заново искать в инете...
насколько я помню нужно еще переменные среды прописать:
помойму у меня на TSLIB_CONSOLEDEVICE ругалось, я менял на /dev/null и всё работало, так же может проканать если вообще не указывать TSLIB_CONSOLEDEVICE
Ребята, помогите с мнуком справиться!
Это какая-то каша в голове...
уже неделю мудохаюсь - результата ноль... не могу даже понять какие адреса пинов указывать в первом шаге :-(
вышлите если можно подправленные файлики...
а вообще если будет расписано что как делать поподробней - будет вообще обалдеть! :-)