mantech 48 15 января Опубликовано 15 января · Жалоба 2 часа назад, repstosw сказал: Скорее всего. Китайцам свойственно выпускать серийную продукцию с прогрессирующей деградацией. Вряд ли, по виду все делали, как задумано, но что за задумка пока мне не ясно... 2 часа назад, repstosw сказал: Похоже на непропай/холодную пайку. Нее, тогда тест вибрацией все сразу бы показал, тут скорее паяльная паста и ее плохая промывка, ИМХО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 15 января Опубликовано 15 января (изменено) · Жалоба 1 hour ago, mantech said: тут скорее паяльная паста и ее плохая промывка, ИМХО. Тогда что мешало плату положить в ёмкость с этанолом и потрясти её? Ну и зубной щёткой ещё почистить контакты? И разве паяльная паста не обнаруживается простым взглядом на компоненты платы? Визуально, на своих экземплярах плат 100ASK, я не вижу следов паяльной пасты между выводами. Изменено 15 января пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 15 января Опубликовано 15 января (изменено) · Жалоба 1 час назад, repstosw сказал: Тогда что мешало плату положить в ёмкость с этанолом и потрясти её? Ну и зубной щёткой ещё почистить контакты? Так и сделал, но шаг мелкий, УЗ ванны нет, куда уж волоски щетки проникли там и почистилось, поэтому на втором модуле проблем с видео и перезагрузкой уже не было, только усб подтупил))) 1 час назад, repstosw сказал: И разве паяльная паста не обнаруживается простым взглядом на компоненты платы? Было видно и немало... На новых версиях уже не обнаружил, но они и работали норм... Изменено 15 января пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 15 января Опубликовано 15 января · Жалоба при нажатии на тач в буфере лежат такие значения левый нижний угол RXA=00000020 STAT=00012002 X=00000503 Y=000007AD X=00000423 Y=0000077B X=00000409 Y=00000780 X=000003E2 Y=0000077B X=000003DB Y=00000778 X=000003DE Y=00000777 X=000003D7 Y=00000776 X=000003F0 Y=0000077F X=00000426 Y=00000780 X=0000045F Y=00000793 X=0000044D Y=0000078A X=00000453 Y=00000788 X=00000446 Y=00000787 X=00000438 Y=00000785 X=0000042D Y=00000786 X=0000042D Y=00000780 x=1069 y=1920 левый верхний RXA=00000020 STAT=00012002 X=00000744 Y=00000766 X=0000062D Y=00000701 X=0000060C Y=000006F1 X=00000614 Y=000006F5 X=0000060F Y=000006EC X=0000060E Y=000006F7 X=00000609 Y=000006EB X=00000607 Y=000006E6 X=000005F7 Y=000006E7 X=000005FB Y=000006E9 X=00000600 Y=000006DF X=000005FD Y=000006E6 X=000005F1 Y=000006E0 X=000005EF Y=000006DC X=000005EE Y=000006DB X=000005E3 Y=000006DE x=1507 y=1758 правый нижний RXA=00000020 STAT=00012002 X=00000655 Y=00000821 X=000004BE Y=0000095C X=000004B9 Y=0000095E X=000004B8 Y=0000095B X=000004B8 Y=0000095C X=000004B5 Y=0000095C X=000004AD Y=0000095E X=000004B0 Y=0000095C X=000004B3 Y=0000095C X=00000397 Y=000009C2 X=00000305 Y=000009EA X=000002F6 Y=000009FE X=000002ED Y=000009FE X=000002ED Y=000009FC X=000002F3 Y=000009FE X=000002EF Y=000009FE x=751 y=2558 правый верхний RXA=00000020 STAT=00012002 X=000006AF Y=00000908 X=000007C2 Y=00000923 X=000007BC Y=00000927 X=000007BE Y=00000924 X=000007B0 Y=0000092C X=000007BF Y=00000927 X=000007BE Y=00000927 X=000007C5 Y=0000091F X=000007CC Y=00000920 X=000007ED Y=00000913 X=0000080A Y=0000090B X=0000081A Y=00000908 X=00000843 Y=000008FD X=00000866 Y=000008F0 X=00000870 Y=000008F1 X=00000865 Y=000008EB x=2149 y=2283 Значения какие-то , мягко говоря, странные. Это нормально? Нужно "каллибровать" под эти значения, какая обычно точность у резистивных тачей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 5 15 января Опубликовано 15 января · Жалоба 31 minutes ago, vasilius said: Значения какие-то , мягко говоря, странные. Это нормально? Нужно "каллибровать" под эти значения, какая обычно точность у резистивных тачей? калибровать нужно оязательно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 15 января Опубликовано 15 января (изменено) · Жалоба 8 часов назад, nanorobot сказал: калибровать нужно оязательно а что значит каллибровать? там есть каллибровка - и есть регистр каллибровки - по дефолту там значение 0х800, после каллибровки там значение 0х80А. Или имеется ввиду программная калибровка по счтаным значениям? Если так, то вот попытался взять тонкий стилус ( даже не палец -) ) и 10 раз тыкнуть в нижний левый угол RXA_START=00000020 00012002 x=648 y=2102 RXA_START=00000020 00012002 x=1240 y=2141 RXA_START=00000002 00010202 x=1550 y=2124 RXA_START=0000000A 00010A02 x=1870 y=2106 RXA_START=00000020 00012002 x=1282 y=2136 RXA_START=00000020 00012002 x=1790 y=2108 RXA_START=00000020 00012002 x=1080 y=2140 RXA_START=00000020 00012002 x=1445 y=2130 RXA_START=0000000E 00010E02 x=1630 y=2117 RXA_START=00000020 00012002 x=794 y=2138 нижний левый угол разброс Х 648-1870, У=2102-2140, нижний правый угол: Х = 653-1877, У=2210-2467 верхний левый угол : Х=1035-2086, У=1917-2094 верхний правый угол : Х=1383-2006 У=2260-2365 Разбросы как-то очень сильные и не логичные. У меня есть два экрана 4,3" 480х272 и 5" 800х480 картина в принципе одинаковая. Или оба татча плохие, или скорее-всего, я не догоняю. Какая в среднем точность у татча должна быть ? У меня получается что крайние положения перекрываются. Изменено 15 января пользователем vasilius Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 5 16 января Опубликовано 16 января (изменено) · Жалоба 5 hours ago, vasilius said: а что значит каллибровать? У меня есть два экрана 4,3" 480х272 и 5" 800х480 картина в принципе одинаковая. Или оба татча плохие, или скорее-всего, я не догоняю. Какая в среднем точность у татча должна быть ? У меня получается что крайние положения перекрываются. Выбросы значений фильтруются программно, медианным фильтром, в TPADC есть встроенный, но его, как мне показалось, недостаточно. Калибровка это и есть привязка к конкретному индикатору так как TPADC ничего не знает о его разрешении. Пример реализации калибровки по трем точкам для графической библиотеки LVGL можно посмотреть здесь. Работать с резистивным тачем при помощи пальца не получится, имхо. Только тонким стилусом. Ну и нужно быть готовым к тому что линейность резистивного тач, даже после калибровки, оставит желать лучшего, особенно на краях экрана. И еще: мне показалось, что резистивный тач дает лучшие результаты при использовании внешнего контроллера типа NS2009, но это чисто мое субъективное мнение. Сам в настоящее время использую емкостной тач, но для этого пришлось пересмотреть концепцию визуального интерфейса, который изначально был был "заточен" под резистивный тач - много мелких элементов управления, которые, при использовании емкостного тач, полностью перекрываются пальцем. Это я к тому, что и у резистивного и у емкостного есть свои достоинства и недостатки. Изменено 16 января пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 января Опубликовано 16 января · Жалоба 10 часов назад, vasilius сказал: а что значит каллибровать? там есть каллибровка - и есть регистр каллибровки Какие регистры?? Почитайте, что такое калибровка резистивной тачпанели https://roker1.blogspot.com/2015/12/blog-post.html 10 часов назад, vasilius сказал: Разбросы как-то очень сильные и не логичные. Физика процесса - сначала идет касание, данные АЦП могут быть неправильные, потом удержание, тут берем среднее значение, потом восстановление, убираете стилус, данные тоже недостоверные, касание и отпускание нужно только для фиксации того, что цикл прикосновения завершен, координаты берем из установившегося положения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 16 января Опубликовано 16 января (изменено) · Жалоба 7 часов назад, nanorobot сказал: Выбросы значений фильтруются программно, медианным фильтром, в TPADC есть встроенный, но его, как мне показалось, недостаточно. Калибровка это и есть привязка к конкретному индикатору так как TPADC ничего не знает о его разрешении. Пример реализации калибровки по трем точкам для графической библиотеки LVGL можно посмотреть здесь. Работать с резистивным тачем при помощи пальца не получится, имхо. Только тонким стилусом. Ну и нужно быть готовым к тому что линейность резистивного тач, даже после калибровки, оставит желать лучшего, особенно на краях экрана. И еще: мне показалось, что резистивный тач дает лучшие результаты при использовании внешнего контроллера типа NS2009, но это чисто мое субъективное мнение. Сам в настоящее время использую емкостной тач, но для этого пришлось пересмотреть концепцию визуального интерфейса, который изначально был был "заточен" под резистивный тач - много мелких элементов управления, которые, при использовании емкостного тач, полностью перекрываются пальцем. Это я к тому, что и у резистивного и у емкостного есть свои достоинства и недостатки. Спасибо за участие! Я вроде его немного победил -) Вернее в таком состоянии, что может работать. Опишу, может, кому-то пригодится, так как некоторые вещи не очевидные: - У меня работает адекватно с включенным 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 будет давать двойное нажатие. что для, например, воода текста не приемлемо. Текущий инит Спойлер __WEAK void TPADC_InitTP(void) { CCU_SetTPADC(CCU_TPADC_SRC_HOSC); TPADC->TP_CTRL_REG0 = (0x00 << 24) | // ADC_FIRST_DLY (0x01 << 23) | // ADC_FIRST_DLY_MODE (0x03 << 20) | // ADC_CLK_DIVIDER /1 (0x0B << 16) | // FS_DIV (0x02 << 0) | // TACQ 0; TPADC->TP_CTRL_REG1 = (0x0B << 12) | // STYLUS_UP_DEBOUNCE (0x01 << 9) | // STYLUS_UP_DEBOUCE_EN (0x01 << 8) | // CHOPPER_EN (0x00 << 6) | // TP_DUAL_EN (0x01 << 5) | // TP_EN (0x00 << 4) | // TP_MODE_SELECT (0x00 << 3) | // ADC_CHAN3_SELECT (0x00 << 2) | // ADC_CHAN2_SELECT (0x00 << 1) | // ADC_CHAN1_SELECT (0x00 << 0) | // ADC_CHAN0_SELECT 0; TPADC->TP_CTRL_REG2 = (0xF << 28) | // TP_SENSITIVE_ADJUST (0x0 << 26) | // TP_FIFO_MODE_SELECT (0x1 << 24) | // PRE_MEA_EN (0xFFF << 0) | // PRE_MEA_THRE_CNT 0; TPADC->TP_CTRL_REG3 = (0x00 << 2) | // FILTER_EN (0x01 << 0) | // FILTER_TYPE 01: 5/3 0; TPADC->TP_INT_FIFO_CTRL_REG = (0x00 << 17) | // TP_OVERRUN_IRQ_EN (0x01 << 16) | // TP_DATA_IRQ_EN (0x00 << 13) | // TP_DATA_XY_CHANGE (0x01 << 8) | // TP_FIFO_TRIG_LEVEL (0x00 << 7) | // TP_DATA_DRQ_EN (0x00 << 4) | // TP_FIFO_FLUSH (0x00 << 1) | // TP_UP_IRQ_EN (0x00 << 0) | // TP_DOWN_IRQ_EN 0; SetHandlerIRQ(TPADC_IRQn, TPADC_IRQHandler, PRI_SYS, 0); TPADC_FlushFIFO(); Тестовый обработчик для UP Спойлер __WEAK void TPADC_IRQHandler(void) { const uint32_t status = TPADC->TP_INT_FIFO_STAT_REG; TPADC->TP_INT_FIFO_STAT_REG = status; // clear the pending status. uint32_t rxData = (status >> 8) & 0x3F; uint32_t xD, yD, xU, yU; if ( ((status & 0xF) == 2) && rxData ) // if ( ((status & 0xF) == 4) && rxData ) { uart_print("\n\r RXA_START="); u32touart0(( status >> 8) & 0x3F); uart_print(" "); u32touart0( status); while ( (TPADC->TP_INT_FIFO_STAT_REG >> 8) & 0x3F ) { yU = TPADC->TP_DATA_REG; xU = TPADC->TP_DATA_REG; } npf_pprintf(&uart0_putc, NULL, "\n\r x=%u y=%u", (xU * 800) / 4096 , (yU * 480) / 4096); npf_pprintf(&uart0_putc, NULL, "\n\r x=%u y=%u \n", xU, yU); } Для тестов я разметил экран 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 я, скорее-всего не стану. Спасибо, всем кто откликнулся. Изменено 16 января пользователем vasilius 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 16 января Опубликовано 16 января · Жалоба On 1/16/2024 at 1:14 PM, vasilius said: Строить на нем GUI я, скорее-всего не стану. в Linux нормально работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasilius 1 16 января Опубликовано 16 января · Жалоба 10 минут назад, sasamy сказал: в Linux нормально работает Возможно я чего-то и не догнал... тут просто нужно определиться с термином "нормально". Если смотреть тут https://elixir.bootlin.com/linux/v6.7-rc7/source/drivers/input/touchscreen/sun4i-ts.c то это по сути так же как я описываю если смотреть тут https://github.com/RT-Thread/rt-thread/blob/master/bsp/allwinner/libraries/sunxi-hal/hal/source/tpadc/hal_tpadc.c#L99 то тут, вроде ошибка в настройе чувствительности - там значение 0х100FFF выходит. Нигде не вижу обработку даже RXA. Может они програмно где-то уровнем выше разгребают данные с пендинга... Если взять резиновый стилус и тыкать - ну более-менее стабильно не спеша - нормально, пальцем по краям хуже... наверно это нормально, для терминала на улице, но до уровня телефона и комфортной работы , скорее нет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 16 января Опубликовано 16 января · Жалоба On 1/16/2024 at 2:06 PM, vasilius said: тут просто нужно определиться с термином "нормально" так там картинка есть - написал на таче пластиковым стержнем, писать конечно немного медленней приходится чтобы не было разрывов, не понимаю почему нельзя использовать тач для GUI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 16 января Опубликовано 16 января · Жалоба 21 минуту назад, sasamy сказал: не понимаю почему нельзя использовать тач для GUI Да все можно, просто надо учитывать особенности резистивного тача, а это реальные нажатия, а не просто чуть прикосновения, как в емкостном, некоторые изменения его работы при температуре -20 и более, но в условиях сырости это куда лучше емкостного, ИМХО. ЗЫ. у себя использовал отдельный контроллер усб, так его даже калибровать не нужно было))) С этим встроенным наверно такой фокус не пройдет))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 16 января Опубликовано 16 января · Жалоба On 1/16/2024 at 2:38 PM, mantech said: просто надо учитывать особенности резистивного тача, а это реальные нажатия, а не просто чуть прикосновения, как в емкостном "как в телефоне" с мултитачем и тасканием по экрану конечно не получится так и процессор не телефонный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 16 января Опубликовано 16 января · Жалоба Если взять резиновый стилус и тыкать - ну более-менее стабильно не спеша - нормально, пальцем по краям хуже... Подушечка пальца - это не для резистивного "тача". Из личного опыта: к плееру Ковон-Д2 стилус (совсем не мягкий, диаметром, практически - карандаш) был в комплекте; на транспортной плёнке у плеера Ковон-Икс9 прямым текстом было: "сенсор резистивный - жмакайте не стесняйтесь". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться