Перейти к содержанию
    

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

2 часа назад, repstosw сказал:

Скорее всего.  Китайцам свойственно выпускать серийную продукцию с прогрессирующей деградацией.

Вряд ли, по виду все делали, как задумано, но что за задумка пока мне не ясно...

2 часа назад, repstosw сказал:

Похоже на непропай/холодную пайку. 

Нее, тогда тест вибрацией все сразу бы показал, тут скорее паяльная паста и ее плохая промывка, ИМХО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, mantech said:

тут скорее паяльная паста и ее плохая промывка, ИМХО.

Тогда что мешало плату положить в ёмкость с этанолом и потрясти её?  Ну и зубной щёткой ещё почистить контакты?

И разве паяльная паста не обнаруживается простым взглядом на компоненты платы?  Визуально, на своих экземплярах плат 100ASK,  я не вижу следов паяльной пасты между выводами.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, repstosw сказал:

Тогда что мешало плату положить в ёмкость с этанолом и потрясти её?  Ну и зубной щёткой ещё почистить контакты?

Так и сделал, но шаг мелкий, УЗ ванны нет, куда уж волоски щетки проникли там и почистилось, поэтому на втором модуле проблем с видео и перезагрузкой уже не было, только усб подтупил)))

1 час назад, repstosw сказал:

И разве паяльная паста не обнаруживается простым взглядом на компоненты платы?

Было видно и немало... На новых версиях уже не обнаружил, но они и работали норм...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при нажатии на тач в буфере лежат такие значения

левый нижний угол

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 

Значения какие-то , мягко говоря, странные.

Это нормально? Нужно "каллибровать" под эти значения, какая обычно точность у резистивных тачей?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, vasilius said:

Значения какие-то , мягко говоря, странные.

Это нормально? Нужно "каллибровать" под эти значения, какая обычно точность у резистивных тачей?

 

калибровать нужно оязательно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 картина в принципе одинаковая. Или оба татча плохие, или скорее-всего, я не догоняю. Какая в среднем точность у татча должна быть ? 

У меня получается что крайние положения перекрываются. 

Изменено пользователем vasilius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, vasilius said:

а что значит каллибровать?

У меня есть два экрана 4,3" 480х272 и 5" 800х480 картина в принципе одинаковая. Или оба татча плохие, или скорее-всего, я не догоняю. Какая в среднем точность у татча должна быть ? 

У меня получается что крайние положения перекрываются. 

 

Выбросы значений фильтруются программно, медианным фильтром, в TPADC есть встроенный, но его, как мне показалось, недостаточно. Калибровка это и есть привязка к конкретному индикатору так как TPADC ничего не знает о его разрешении. Пример реализации калибровки по трем точкам для графической библиотеки LVGL можно посмотреть здесь.  Работать с резистивным тачем при помощи пальца не получится, имхо. Только тонким стилусом. Ну и нужно быть готовым к тому что линейность резистивного тач, даже после калибровки, оставит желать лучшего, особенно на краях экрана. И еще: мне показалось, что резистивный тач дает лучшие результаты при использовании внешнего контроллера типа NS2009, но это чисто мое субъективное мнение. Сам в настоящее время использую емкостной тач, но для этого пришлось пересмотреть концепцию визуального интерфейса, который изначально был был "заточен" под резистивный тач - много мелких элементов управления, которые, при использовании емкостного тач, полностью перекрываются пальцем. Это я к тому, что и у резистивного и у емкостного есть свои достоинства и недостатки.

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, vasilius сказал:

а что значит каллибровать?

там есть каллибровка - и есть регистр каллибровки

Какие регистры?? Почитайте, что такое калибровка резистивной тачпанели  https://roker1.blogspot.com/2015/12/blog-post.html

10 часов назад, vasilius сказал:

Разбросы как-то очень сильные и не логичные. 

Физика процесса - сначала идет касание, данные АЦП могут быть неправильные, потом удержание, тут берем среднее значение, потом восстановление, убираете стилус, данные тоже недостоверные, касание и отпускание нужно только для фиксации того, что цикл прикосновения завершен, координаты берем из установившегося положения...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 пикселей

image.thumb.png.8d5aae88cb914c4a8c4036488a2b0c08.png

чтобы визуально понимать зоны и площади нажатия...

при такой разметке и настройке, изменения по Х уже с адекватным шагом

 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 я, скорее-всего не стану. 

Спасибо, всем кто откликнулся. 

Изменено пользователем vasilius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/16/2024 at 1:14 PM, vasilius said:

Строить на нем GUI я, скорее-всего не стану.

в Linux нормально работает

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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. Может они програмно где-то уровнем выше разгребают данные с пендинга... 

Если взять резиновый стилус и тыкать - ну более-менее стабильно не спеша - нормально, пальцем по краям хуже... 

наверно это нормально, для терминала на улице, но до уровня телефона и комфортной работы , скорее нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/16/2024 at 2:06 PM, vasilius said:

тут просто нужно определиться с термином "нормально"

так там картинка есть - написал на таче пластиковым стержнем, писать конечно немного медленней приходится чтобы не было разрывов, не понимаю почему нельзя использовать тач для GUI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 минуту назад, sasamy сказал:

не понимаю почему нельзя использовать тач для GUI

Да все можно, просто надо учитывать особенности резистивного тача, а это реальные нажатия, а не просто чуть прикосновения, как в емкостном, некоторые изменения его работы при температуре -20 и более, но в условиях сырости это куда лучше емкостного, ИМХО.

ЗЫ. у себя использовал отдельный контроллер усб, так его даже калибровать не нужно было))) С этим встроенным наверно такой фокус не пройдет))) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/16/2024 at 2:38 PM, mantech said:

просто надо учитывать особенности резистивного тача, а это реальные нажатия, а не просто чуть прикосновения, как в емкостном

 "как в телефоне" с мултитачем и тасканием по экрану конечно не получится так и процессор не телефонный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если взять резиновый стилус и тыкать - ну более-менее стабильно не спеша - нормально, пальцем по краям хуже...
Подушечка пальца - это не для резистивного "тача".
Из личного опыта: к плееру Ковон-Д2 стилус (совсем не мягкий, диаметром, практически - карандаш) был в комплекте; на транспортной плёнке у плеера Ковон-Икс9 прямым текстом было: "сенсор резистивный - жмакайте не стесняйтесь".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...