реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> LPC17xx Quadrature encoder, Кто то использовал на практике?
Velund
сообщение Nov 29 2013, 00:45
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Доброе время суток.

Возникла некоторое время назад нужда подключить хитрый датчик (точнее манипулятор управления) к поделке на LPC. Тогда как то замялся вопрос, но опять нарисовался сегодня. wink.gif А я сам как то и не сподобился провести эксперимент. Может у кого то есть готовый ответ на вопрос в конце этого поста?

Из характерного - девайс использует наличие напряжения при нахождении в нейтральном положении как индикатор целостности проводки и меандр с частотой пропорциональной отклонению.

Очень хорошо вроде бы вписывается в функции QEI. Прямо таки подаешь сигнал и получаешь готовую цифру, пропорциональную отклонению, без нагрузки на проц, да еще и с возможностью сгенерить прерывание если манипулятор резко дернули "вниз".

Но вот смущает необходимость при нулевой частоте контролировать наличие логической единицы для проверки того что подключен этот манипулятор и линия цела. В документации непонятно, будет ли читаться пин сконфигуренный под QEI как GPIO. Еще один пин выделять для этого - жалко.

Если кто то пробовал использовать QEI и одновременно читать состояние с GPIO - может подскажете что получилось?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 29 2013, 02:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



QEI не пробовал, но сейчас у меня в проекте используются входы EventMonitor-а, которые опрашиваются как GPIO когда есть питание и как входы EventMonitor-а, когда питание выключено
(без переконфигурирования естественно). Конфигурю на них функцию GPIO, но получается что функция EventMonitor всё равно при этом работает (и при вкл. питании и при выкл.).
Конечно функция GPIO включена на ввод.
LPC1778.

Так что у вас есть надежда. Пробуйте.
Go to the top of the page
 
+Quote Post
swisst
сообщение Nov 29 2013, 12:29
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



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

вот цитата из мануала на 1768
Цитата
GPIO port Pin value register FIOxPIN (FIO0PIN to FIO4PIN- 0x2009
C014 to 0x2009 C094)
This register provides the value of port pins that are configured to perform only digital
functions. The register will give the logic value of the pin regardless of whether the pin is
configured for input or output, or as GPIO or an alternate digital function. As an example,
a particular port pin may have GPIO input, GPIO output, UART receive, and PWM output
as selectable functions. Any configuration of that pin will allow its current logic state to be
read from the corresponding FIOxPIN register.

можно проверить на том же уарте, но я бы еще и пин заложил... biggrin.gif
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 29 2013, 12:38
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Квадратурный энкодер ни разу не использовал, но состояние ног UART / SPI / I2C отлично считывается с GPIO. LPC1768

Для внешнего прерывания, кстати, довольно удобно - настраиваешь на фронт, а потом разбираешься, закончилось оно, или ещё нет.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
evgen2
сообщение Dec 2 2013, 13:48
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Цитата(Velund @ Nov 29 2013, 04:45) *
Если кто то пробовал использовать QEI и одновременно читать состояние с GPIO - может подскажете что получилось?


я так делаю.
Работает.
Как-то так

i = LPC_GPIO1->FIOPIN;
//разряды LPC_QEI = 20,23,24
if(i & 0x0100000) v |=0x01;
if(i & 0x0800000) v |=0x02;
if(i & 0x1000000) v |=0x04;

только чтоб QEI считало нужно, чтоб было два меандра - "синус-косинус".


Сообщение отредактировал evgen2 - Dec 2 2013, 13:55
Go to the top of the page
 
+Quote Post
Velund
сообщение Dec 2 2013, 20:07
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



QUOTE (evgen2 @ Dec 2 2013, 17:48) *
я так делаю.
Работает.
Как-то так

i = LPC_GPIO1->FIOPIN;
//разряды LPC_QEI = 20,23,24
if(i & 0x0100000) v |=0x01;
if(i & 0x0800000) v |=0x02;
if(i & 0x1000000) v |=0x04;

только чтоб QEI считало нужно, чтоб было два меандра - "синус-косинус".


Там 2 режима - "квадратурный кодер" и "датчик импульсов плюс сигнал направления". Вот последний и планировалось использовать.
Go to the top of the page
 
+Quote Post
evgen2
сообщение Dec 3 2013, 14:13
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Цитата(Velund @ Dec 3 2013, 00:07) *
Там 2 режима - "квадратурный кодер" и "датчик импульсов плюс сигнал направления".


Да, действительно. Подзабыл за ненадобностью.
Go to the top of the page
 
+Quote Post
Velund
сообщение Dec 22 2013, 18:13
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Чтобы закрыть тему... wink.gif

Оно работает. wink.gif Частотомер плюс контроль логического уровня при частоте равной нулю на одном пине живут.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01551 секунд с 7
ELECTRONIX ©2004-2016