Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Подключение энкодера
Xaero_IV
Добавлено 16.05.2012 11:27 Сообщение: 21
Xaero_IV
0

Пункты: 60
Регистрация: 16.05.2012
Всем привет! Пытаюсь сделать так же как написал Jury093: в конфиге добавил rotary encoder gpio, в файле боард прописал хидер энкодера, структуру и регистрацию платформы, но после сборки ядра в логе строки типа input: rotary-encoder as /devices/platform/rotary-encoder.0/input/input... у меня нет и соответственно нет нового event. В папке sys/device/platform вижу, что появилось новое устройство rotary_encoder. Подскажите, что нужно ещё сделать. Я в линуксе новичок, сильно не пинайте если что не так написал.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.05.2012 12:33 Сообщение: 22
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
проверьте включение пунктов в ядре:
Input Device Support->Event Interface
GPIO Support->/sys/class/gpio
GPIO Support->Generic GPIO Controller

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Xaero_IV
Добавлено 16.05.2012 13:29 Сообщение: 23
Xaero_IV
0

Пункты: 60
Регистрация: 16.05.2012
проверил, включены, правда не нашел пункт GPIO Support->Generic GPIO Controller. У меня в ядре включен драйвер gpio-keys для кнопки USER на отладочной плате, он прекрастно работает, а вот мои попытки подключить rotary-encoder пока не увенчались успехом :(
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.05.2012 13:48 Сообщение: 24
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
проверил, включены, правда не нашел пункт GPIO Support->Generic GPIO Controller.

хм.. это я в 3.2.0 заглянул.. может в более ранних этого пункта и нет..

Цитата
У меня в ядре включен драйвер gpio-keys для кнопки USER на отладочной плате, он прекрастно работает, а вот мои попытки подключить rotary-encoder пока не увенчались успехом :(

тогда выложите - как вы прописали вызов регистрации енкодера в п/п инита борды
а я вечером (по МСК) посмотрю, как и что прописано у меня..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Xaero_IV
Добавлено 16.05.2012 16:39 Сообщение: 25
Xaero_IV
0

Пункты: 60
Регистрация: 16.05.2012
Код

static void __init blueshark_init(void)
{
-----//-----
platform_add_device(blueshark_devices, ARRAY_SIZE(blueshark_devices));
-----//-----
}

static struct platform_devices *blueshark_devices[] __initdata = {
-----//-----
&rotary_encoder_device,
-----//-----
}


Кстати нашел в инете драйвер rotary_encoder который отличается от драйвера которые был у меня наличием функций rotary_encoder_get_state, rotary_encoder_report_event и наличием режима half-period.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 16.05.2012 21:54 Сообщение: 26
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
хм.. разыскал ядро с внедренным энкодером.. ничего криминального у вас не вижу..
Код
//for rotary encoder
platform_device_register(&rotary_encoder_device);

есть подозрение, что с пинами что-то неладно у вас..
простейшая проверка - по очереди подсунуть пины для энкодера вместо пина, прописанного для "gpio-keys для кнопки USER"
судя по blueshark у вас вероятно omap3, там достаточно заморочно интятся пины - его надо прописать в массиве падов для инициализации с правильным именем. а для надежности проверить в файле muxXXX(?) на соответствие..
разыщите в сорцах ядра драйвер rotary-encoder.c а в нем п/п _probe. в начало и в успешное завершение впишите пару примитивных
Код
printk("*** encoder 1\n");

тогда в логе можно будет проверить - стартует ли драйвер вообще или как..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Xaero_IV
Добавлено 17.05.2012 15:07 Сообщение: 27
Xaero_IV
0

Пункты: 60
Регистрация: 16.05.2012
Спасибо большое за помощь, все заработало. Оказывается действительно драйвер не стартовал. Проблема оказалась очень проста, в драйвере имя было определено как "rotary-encoder", а в боарде "rotary_encoder" )). Исправил, драйвер стал стартовать, но тут же проблема с пинами образовалась. Переконфигурировал их и все заработало ).
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.05.2012 00:28 Сообщение: 28
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Переконфигурировал их и все заработало ).

ну и отлично, гуд!

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux