Спасибо за участие!
Я вроде его немного победил -) Вернее в таком состоянии, что может работать. Опишу, может, кому-то пригодится, так как некоторые вещи не очевидные:
- У меня работает адекватно с включенным PRE_MEA_EN, но для него есть параммерт, который отвечает за чувствительность (PRE_MEA_THRE_CNT), у него диапазон значений 0-0хFFFFFF. Здесь не приятный момент, адекватное значение 0xFFF. Чем ниже, тем чувствительность хуже. Но выше этого значения чувствительность повышается, но значения могут быть одинаковые слева и справа татча - не годятся.
- Регистр прерываний и статуса: Неважно, что включено в регистре настройки прерываний (TP_INT_FIFO_CTRL_REG) - можно включить все значения, а можно только одно (TP_DATA_IRQ_EN). В регистре статуса биты UP\DOWN\Overrun будут выставлятся в независимости от того, что указано.
- При срабатывании прерываний лучше мониторить колл-во байт в ФИФО буфере, чтобы понимать есть ли там данные. Например, при DOWN данных нет, если считать данные, то можно получить последние с последнего нажатия. Дальше зависит от того какой режим работы требуется:
- Если режим одничного ввода - типа клавиатуры, нажатий на кнопку и т.д., то лучше мониторить UP статус, тогда получаются, хоть и "тугие", но одиночные нажатия.
- Если нужно режим слайда - тоесть нажимаем и тянем и получаем значения, то нужно мониторить состояние TP_IDLE_FLG. В таком случае данные валятся пока есть нажатие, непрерывно. В зависимости от GUI это придется по разному обрабатывать.
- Лучше игнорировать когда статус IDLE+UP+DOWN. Например IDLE+UP будет давать двойное нажатие. что для, например, воода текста не приемлемо.
Текущий инит
Тестовый обработчик для UP
Для тестов я разметил экран 800*480 на квадраты по 80*80 пикселей
чтобы визуально понимать зоны и площади нажатия...
при такой разметке и настройке, изменения по Х уже с адекватным шагом
RXA_START=00000020 00012002
x=280 y=65
x=1436 y=557
RXA_START=00000020 00012002
x=325 y=64
x=1664 y=549
RXA_START=00000020 00012002
x=362 y=63
x=1856 y=542
RXA_START=00000020 00012002
x=387 y=61
x=1984 y=525
RXA_START=00000020 00012002
x=414 y=58
x=2121 y=496
RXA_START=00000020 00012002
x=440 y=60
x=2254 y=517
RXA_START=00000020 00012002
x=471 y=66
x=2413 y=569
RXA_START=00000020 00012002
x=497 y=67
x=2548 y=575
RXA_START=00000020 00012002
x=520 y=58
x=2665 y=495
RXA_START=00000020 00012002
x=552 y=66
x=2829 y=570
примерно 40 точек , что дает примерную точность в 2-3 пикселя.
RXA_START=00000020 00012002
x=275 y=63
x=1409 y=545
RXA_START=00000020 00012002
x=258 y=90
x=1321 y=773
RXA_START=00000020 00012002
x=250 y=110
x=1285 y=942
RXA_START=00000020 00012002
x=257 y=129
x=1319 y=1103
RXA_START=00000020 00012002
x=220 y=153
x=1129 y=1308
RXA_START=00000020 00012002
x=224 y=177
x=1148 y=1516
по У 20-25 точек - такая же точность...
Так же стоит заметить что с регистра данных первое это Y значение, потому что порядок XYXYXYXY, а читаем с конца. Сначала читал наоборот.
В целом мои текущие выводы :очень тугая раздражающая штука. Как бесящий терминал\банкомат с не комфортным уровнем нажатия. Тоесть если вам надо ввести какой-то PIN. Или очень редкое нажатие, или необходим ввод текста, то наверное, можно скрипя использовать. Строить на нем GUI я, скорее-всего не стану.
Спасибо, всем кто откликнулся.