Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Не получается найти пин
titan83
Добавлено 28.05.2013 10:05
0
Сообщение: 1
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Здравствуйте, хочу использовать пины, на которые разведен isi в качестве gpio, задействовал выводы isi d0-d9, все выводы работают правильно на ввод и на вывод, кроме одного - isi d1 pb21 /sys/class/gpio85, ищу его на 945-MB v1.C на рзъеме X6-30, ищу и не нахожу ни на вход, ни на выход, в sysfs содержимое файла value меняется, т.е. вроде как ничего на этом порту нет, в файле at91sam9g45_devices.c тоже нет упоминаний об этом пине. Что еще можно проверить?
Спасибо
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.05.2013 11:32 Редактировалось 28.05.2013 11:36 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

C на рзъеме X6-30, ищу и не нахожу


X6 -> 30 ISI_D1

у меня по крайней мере в ядре как gpio он работает в составе matrix-keypad, через sysfs не пробовал управлять. Какое ядро у вас ?

Цитата

т.е. вроде как ничего на этом порту нет


по крайней мере если есть драйвер ISI то и пины для него где-то должны быть переключены, хотя судя по тому что все остальные работают - непонятно в чем загвоздка, попробуйте из ядра поуправлять.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 28.05.2013 13:10 Сообщение: 3
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
еще в догонку посмотрел на 945-oem на X-7-15 - тоже мимо.
ядро сейчас 3.2.18 по вашей инструкции.
использовать хочу как раз для опроса клавиатуры.
попробовал на ядре 2.6.36 - там есть в конфиге ядра опция Atmel ISI - отключил - пины заработали, опять же кроме isi_d1
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.05.2013 13:31 Редактировалось 28.05.2013 13:34 Сообщение: 4
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

ядро сейчас 3.2.18 по вашей инструкции.
использовать хочу как раз для опроса клавиатуры.


Вот как раз на том ядре на модуле OEM с местной материнской платой матричная клавиатура на пинах ISI
linux-3.2.18/arch/arm/mach-at91/board-sam9m10g45ek.c

Код

/*
* GPIO keyboard
*/
#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE)
static const uint32_t ek_keymap[] = {
/* KEY(row, col, keycode) */
KEY(0, 0, KEY_0),
KEY(0, 1, KEY_1),
KEY(0, 2, KEY_2),
KEY(0, 3, KEY_3),

KEY(1, 0, KEY_4),
KEY(1, 1, KEY_5),
KEY(1, 2, KEY_6),
KEY(1, 3, KEY_7),

KEY(2, 0, KEY_8),
KEY(2, 1, KEY_9),
KEY(2, 2, KEY_COMMA),
KEY(2, 3, KEY_ESC),

KEY(3, 0, KEY_E),
KEY(3, 1, KEY_UP),
KEY(3, 2, KEY_ENTER),
KEY(3, 3, KEY_DOWN),
};

static const struct matrix_keymap_data ek_keymap_data = {
.keymap = ek_keymap,
.keymap_size = ARRAY_SIZE(ek_keymap),
};

static const uint32_t ek_row_gpios[] =
{ /* MB(X6) */
AT91_PIN_PB21, /* ISI_D1 */
AT91_PIN_PB22, /* ISI_D2 */
AT91_PIN_PB24, /* ISI_D4 */
AT91_PIN_PB26 /* ISI_D6 */
};

static const uint32_t ek_col_gpios[] =
{
AT91_PIN_PB28, /* ISI_PCK */
AT91_PIN_PB23, /* ISI_D3 */
AT91_PIN_PB25, /* ISI_D5 */
AT91_PIN_PB27 /* ISI_D7 */
};

static struct matrix_keypad_platform_data ek_mkp_pdata = {
.keymap_data = &ek_keymap_data,
.row_gpios = ek_row_gpios,
.col_gpios = ek_col_gpios,
.num_row_gpios = ARRAY_SIZE(ek_row_gpios),
.num_col_gpios = ARRAY_SIZE(ek_col_gpios),
.col_scan_delay_us = 10,
.debounce_ms = 10,
.wakeup = 1,
.active_low = 1,
};

static struct platform_device ek_mkp_device = {
.name = "matrix-keypad",
.id = -1,
.dev = {
.platform_data = &ek_mkp_pdata,
},
};

static void __init ek_add_device_mkp(void)
{
int i;

for (i = 0; i < ARRAY_SIZE(ek_row_gpios); i++) {
at91_set_GPIO_periph(ek_row_gpios[i], 1);
at91_set_deglitch(ek_row_gpios[i], 1);
}

for (i = 0; i < ARRAY_SIZE(ek_col_gpios); i++)
at91_set_gpio_output(ek_col_gpios[i], 0);

platform_device_register(&ek_mkp_device);

}
#else
static void __init ek_add_device_gpio_mkp(void) {}
#endif
...
static void __init ek_board_init(void)
{
...
/* GPIO keyboard */
ek_add_device_mkp();
/* AC97 */
...
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 28.05.2013 14:54 Сообщение: 5
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
я этот файл разглядывал в первую очередь - у меня там только пины джойстика расписаны, у меня вообще про ISI только в 9263_devices.c есть упоминания.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.05.2013 15:31 Редактировалось 28.05.2013 15:34 Сообщение: 6
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Я привел в качестве примера то что у меня прописано и работает

Цитата

{ /* MB(X6) */
AT91_PIN_PB21, /* ISI_D1 */


как видите PB21 используется и выведен он так как на схеме MB обозначено, почему не работает на том же самом ядре и железе у вас - это уже вы сами разбирайтесь.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 28.05.2013 17:13 Сообщение: 7
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
да это понятно)
если не получится разобраться, то перейду на isi_d10 или isi_clk, оно все работает.
спасибо за комментарии
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux