Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Подключение энкодера
Alfamayonez
Добавлено 09.10.2011 14:35
0
Сообщение: 1
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Пробовал кто обрабатывать энкодер в linux?
Основа драйвера я так понимаю просто читать значения на пинах, к которым будет подключен энкодер? ioread32()? :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.10.2011 16:43 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Такой вопрос - о каком енкодере речь ?
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 10.10.2011 12:48 Сообщение: 3
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
:)
Пока просто от мышки :).
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 10.10.2011 15:10 Редактировалось 10.10.2011 16:08 Сообщение: 4
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Хех :) что-получилось :) gpio_get_value помог :).
Цитата

hexdump /dev/enc0

0000000 0001 0000 0001 0000 0001 0000 0001 0000
*
03068d0 0001 0000 0000 0000 0000 0000 0000 0000
03068e0 0000 0000 0000 0000 0000 0000 0000 0000

Неужели я правильно все сделал? :)
---upd
Похоже что нет.
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 10.10.2011 20:35 Сообщение: 5
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Так вроде правильно всетаки? Господа матерые, подскажите зеленому :)?
По-сути вот, что у меня вышло.
Цитата

Устанавливаем положение когда ни один светодиод не светит. Затем вращаем по часовой стрелке, очень медленно, сначало зажигается светодиод на выводе B затем на половине одного щелчка зажигается светодиод на выводе A, затем щелчек оба светятся еще пол щелчка перестает светится B и затем оба гаснут. Ну и так в обратном направлении получаем цикл наоборот - оба светятся, один гаснет затем другой. Получается что при вращении по часовой первым зажигается B а против зажигается A. как-то так.
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 12.10.2011 11:17 Редактировалось 12.10.2011 16:41 Сообщение: 6
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Посадил энкодер на прерывание по пину, шумит больно, хотя pullup используется. В случае моего энкодера от мышки, этих шумов не избежать?
--UPD--
Интересное выяснил:), оказывается нельзя сделать IRQ_TYPE_EDGE_FALLING или RISING на пин, только BOTH.
Почему так сделано никто не знает?
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 13.10.2011 14:38 Сообщение: 7
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
А вот это ещё не смотрел: http://dmilvdv.narod.ru/AT91SAM9260/gui.html#encoder ?
Спуститься к концу Подняться к началу
Персональная информация
Alfamayonez
Добавлено 13.10.2011 15:51 Редактировалось 13.10.2011 19:24 Сообщение: 8
Alfamayonez
3.42

Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
2Lampus, О! про сайт знаю, а этого не видал там. Класс! Спасибо большое!
UPD---
Ну и мутный же код драйвера там для енкодера.
Не понимаю смысла конструкции двойного отрицания (!!). Зачем? Чтобы вызвать задержку?
Спуститься к концу Подняться к началу
Персональная информация
bzzz
Добавлено 13.10.2011 19:44 Сообщение: 9
bzzz
0

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

Не понимаю смысла конструкции двойного отрицания (!!). Зачем? Чтобы вызвать задержку?


чтобы скаляр привести к логическому типу (0/1). без задержки на условном переходе.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.10.2011 12:59 Редактировалось 15.10.2011 13:09 Сообщение: 10
sasamy
4.71

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

Не понимаю смысла конструкции двойного отрицания (!!). Зачем? Чтобы вызвать задержку?


Это называется - чтобы никто не догадался :) считаю такие конструкции только запутывают код, тем более что

Цитата

/* GPIO INPUT: return zero or nonzero */
int gpio_get_value(unsigned gpio);

/* GPIO OUTPUT */
void gpio_set_value(unsigned gpio, int value);

The values are boolean, zero for low, nonzero for high.


Скорей всего (!!) там применили для того чтобы nonzero однозначно привести к 1 для дальнейших арифметических операций.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux