Page 1 of 2

Залип низкий уровень на кнопке

PostPosted: 16 Sep 2015, 11:20
by miguell
Здравствуйте!
Собственно, сабж. На кнопке джойстика "вверх" висит лог. "0" Подключаются они там стандартно. Кнопку отпаивал, резисторную сборку убирал, мерил ток по этим кнопкам, то есть вместо сборки амперметр тыкал - все показывают 0 на пределе 200mA, а эта - 4mA. А в выключенном состоянии измерения падений напряжений в режиме прозвонки диода на кнопках тоже разные - на всех 3-х показывает 570mV, а на этой 650mV. Пин подпален?
Короче, плеер считает, что кнопка постоянно нажата, из-за этого большие проблемы. По меню не походишь.
Фишка в том, что я не уверен на 100%, что это хардварная проблема. Может бут-код побился, и порт инициализируется криво.

Так можно ли программно убрать обработку кнопок или установить в регистре этот бит в "1"? Какие пути решения могут быть?
Чем можно читать состояния регистров и чем устанавливать? Желательно из шелла.
Спасибо.

Re: Залип низкий уровень на кнопке

PostPosted: 16 Sep 2015, 11:28
by Virtual
утиль gpio тебе в руки.
ею можно как отследить номер gpio где кн. сидит так и перевести ногу в нужное состояние, да инициализировать порт.

Re: Залип низкий уровень на кнопке

PostPosted: 16 Sep 2015, 16:22
by miguell
Видимо все-таки хардварная проблема... Устанавливаю gpio 22 1, а он снова в 0 встает. Отпаяю конденсатор... Хотя маловероятно, скорее порт пробит. Какая-нибудь шотка на землю пробилась. К примеру.
Как считаете, можно отжечь остатки порта? Электролит зарядить 12 вольтами и бахнуть по пину? Или есть идеи как программно заблокировать порт? Отжиг порта мне не нравится, совсем не нравится.

Re: Залип низкий уровень на кнопке

PostPosted: 16 Sep 2015, 18:56
by Virtual
Устанавливаю gpio 22 1, а он снова в 0 встает

1. нужно прибить DvdPlayer дабы исключить что он гадит (сделай stopall)
2. точно уверен что искомое gpio 22 ?
3.
покажи:
Code: Select all
gpio
gpio 22 1
gpio

Re: Залип низкий уровень на кнопке

PostPosted: 17 Sep 2015, 09:43
by miguell
Сейчас стоит уже AMP12, последнее ядро, без GUI. Стоковую прошивку заменил. Собственно, ситуация не поменялась. А вычислил искомое GPIO так:
gpio -c и зажал все клавиши на крестике. Все 3 упали в ноль, кроме того, 22-го который уже в 0 был. Ну и там адреса портов идут последовательно, начиная с 16-го и оканчивая 25-м, итого 10 кнопок, все реагируют, даже программно устанавливаются до следующего нажатия, а этот гад - залип и все тут.
Планы такие:
1 - выполню все по твоим рекомендациям выше, логи выложу.
2 - если не поможет, есть идея запустить без NAND флеши, дабы исключить битый бут-код. Хотя, имхо, все с ним нормально. Так что не знаю, это может и не стоит делать. Кстати, я выложил бут на GoogleDrive: https://drive.google.com/open?id=0B0B_i ... TlBcHFwR28

Re: Залип низкий уровень на кнопке

PostPosted: 17 Sep 2015, 11:08
by Virtual
п2. делать не стоит! мало того что без пользы, так еще и сломать можешь чего либо. :mrgreen:
покажи результат:
Code: Select all
gpio -n:p 0xB8000368

потом делай
Code: Select all
gpio -n:p 0xB8000368 0x555555AA

и проверяй свои кнопки.

Re: Залип низкий уровень на кнопке

PostPosted: 17 Sep 2015, 14:20
by miguell
Выполнил.
Code: Select all
AMP12 login: root


BusyBox v1.18.5 (2013-10-10 17:37:45 BDT) built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ # gpio -n:p 0xB8000368
0xB8000368 0x155556AA
~ # gpio -n:p 0xB8000368 0x555555AA
0xB8000368 0x555555AA
~ # gpio -c
    .  63-56 . 55-48  . 47-40  . 39-32  . 31-24  . 23-16  . 15-8   .  7-0
dir  00000000 00000000 00010000 00000000 00000000 00000000 11111100 00001010
inp  10000000 00000000 00011100 00000000 00000011 10111111 00111110 00000000
out  00000000 00000000 00010000 00000000 00000000 00000000 11111100 00000000
    . 127-120. 119-112. 111-104. 103-96 . 95-88  . 87-80  . 79-72  . 71-64
dir  00000000 00000000 00000000 01000010 00000000 00000000 00011010 00000111
inp  00000000 00000000 00000011 10000010 00000000 00000001 00000000 00000000
out  00000000 00000000 00000000 00000010 00000000 00000000 00001000 00000000


Такая вот фигня... Как был в 0 22 порт, так и остался.

Re: Залип низкий уровень на кнопке

PostPosted: 17 Sep 2015, 17:30
by Virtual
ты не сделал
Code: Select all
gpio 22 1

перед
Code: Select all
gpio -c

выполни последовательно
Code: Select all
gpio -n:p 0xB8000368 0x555555AA
gpio 22 1
gpio

Re: Залип низкий уровень на кнопке

PostPosted: 17 Sep 2015, 19:32
by miguell
Code: Select all
AMP12 login: root


BusyBox v1.18.5 (2013-10-10 17:37:45 BDT) built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ # gpio -n:p 0xB8000368 0x555555AA
0xB8000368 0x555555AA
~ # gpio 22 1
get GPIO:16 = 0
set GPIO:16,1
~ # gpio
    .  63-56 . 55-48  . 47-40  . 39-32  . 31-24  . 23-16  . 15-8   .  7-0
dir  00000000 00000000 00010000 00000000 00000000 01000000 11111100 00001010
inp  10000000 00000000 00011100 00000000 00000011 10111111 00111110 00000000
out  00000000 00000000 00010000 00000000 00000000 01000000 11111100 00000000
    . 127-120. 119-112. 111-104. 103-96 . 95-88  . 87-80  . 79-72  . 71-64
dir  00000000 00000000 00000000 01000010 00000000 00000000 00011010 00000111
inp  00000000 00000000 00000011 10000010 00000000 00000001 00000000 00000000
out  00000000 00000000 00000000 00000010 00000000 00000000 00001000 00000000
~ #

Re: Залип низкий уровень на кнопке

PostPosted: 17 Sep 2015, 21:18
by Virtual
гпио22 физически замкнут на землю