[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: RD3AVJ 
Форум » форумы » Общие вопросы по Bascom-AVR » Энкодеры в Bascom
Энкодеры в Bascom
mikburДата: Суббота, 08.12.2012, 06:06 | Сообщение # 1
Группа: Пользователи
Сообщений: 7

Статус: Offline
Здравствуйте, уважаемые.
Мучаюсь уже месяц.
Возникла необходимость подключить 6 энкодеров к atmega8 как это реализовать.
Если кто нибудь подобное проделывал поделитесь исходником.


 
RD3AVJДата: Суббота, 08.12.2012, 11:15 | Сообщение # 2
Группа: Модераторы
Сообщений: 175

Статус: Offline
mikbur, а Вы уверены в необходимости такого количества энкодеров? Может поделитесь задумкой? Порешаем этот вопрос по другому?

 
exersizzeДата: Суббота, 08.12.2012, 20:28 | Сообщение # 3
Группа: Администраторы
Сообщений: 716

Статус: Offline
Что-то и впрямь много энкодеров, прерываний на всех не хватит biggrin
Придется опрашивать каждый энкодер вручную (т.е. программно). Может тогда использовать одно прерывание на всех? Суть в том чтобы соединить один из выходов энкодера вместе с остальными и посадить через диод на прерывание. Затем по срабатыванию в обработчике прерываний проверить с какой ноги пришло прерывание (для этого и понадобятся диоды на каждой ноге) и затем обработать энкодер как обычно.


 
mikburДата: Суббота, 08.12.2012, 23:00 | Сообщение # 4
Группа: Пользователи
Сообщений: 7

Статус: Offline
Quote (RD3AVJ)
а Вы уверены в необходимости такого количества энкодеров? Может поделитесь задумкой? Порешаем этот вопрос по другому?


Задумал изготовить сей девайс: http://www.opencockpits.com/catalog/mcp-737ng-v2-pi-110.html?image=2 Уже собрал плату индикации и плату входов для кнопоки все уперлось в эти энкодеры sad




Сообщение отредактировал mikbur - Суббота, 08.12.2012, 23:03
 
topДата: Воскресенье, 09.12.2012, 13:11 | Сообщение # 5
Группа: Друзья
Сообщений: 146

Статус: Offline
Крутая штука) Но полноценных 6 внешних прерываний можно, например, найти в ATmega128 (Если, конечно, я не ошибаюсь с PCINT. Поправьте коль так.).

 
exersizzeДата: Воскресенье, 09.12.2012, 14:49 | Сообщение # 6
Группа: Администраторы
Сообщений: 716

Статус: Offline
ага, в 128-й их аж 8 штук, обозначены как INT0-INT7
PCINT это в новых микроконтроллерах типа 48/88 etc там вообще почти каждая нога общего назначения может работать как вход внешнего прерывания, только пока не видел такой реализации на bascom


 
mikburДата: Воскресенье, 09.12.2012, 22:15 | Сообщение # 7
Группа: Пользователи
Сообщений: 7

Статус: Offline
Блин, невыгодно ради только 6 крутилок ставить 128-ю.
может есть какой вариант на 2313 или 8меге ?? Как нибудь через таймеры??




Сообщение отредактировал mikbur - Понедельник, 10.12.2012, 00:36
 
topДата: Понедельник, 10.12.2012, 00:42 | Сообщение # 8
Группа: Друзья
Сообщений: 146

Статус: Offline
А что, если вместо энкодеров и прерываний использовать АЦП? Как раз 6 входов АЦП, повесить на каждый по переменному резистору. В цикле вызывать подпрограмму обработки данных с ацп. Диапазон данных АЦП от 0 до 1023. Путем математических операций можно привести к любому другому, необходимому диапазону.

А чем не подходит вариант, что описан в сообщении №3?




Сообщение отредактировал top - Понедельник, 10.12.2012, 00:46
 
mikburДата: Понедельник, 10.12.2012, 03:18 | Сообщение # 9
Группа: Пользователи
Сообщений: 7

Статус: Offline
Quote (top)
А что, если вместо энкодеров и прерываний использовать АЦП? Как раз 6 входов АЦП, повесить на каждый по переменному резистору. В цикле вызывать подпрограмму обработки данных с ацп. Диапазон данных АЦП от 0 до 1023. Путем математических операций можно привести к любому другому, необходимому диапазону.

А чем не подходит вариант, что описан в сообщении №3?


Не подходит тем что в оригинале энкодеры (это панель автопилота от самолета boeing 737-ng и в данный момент я пытаюсь собрать полноразмерный кокпит этого "чуда")
должно получиться что то типа этого : http://www.youtube.com/watch?v=AJpt6JC4Qks
Да и остальные панели тоже с энкодерами.
Может как-нибудь припендюрить PCF8574 и попробывать через них ?

ЗЫ по поводу "вариант, что описан в сообщении №3"

Не совсем понятно как. есть где нибудь примерчик




Сообщение отредактировал mikbur - Понедельник, 10.12.2012, 03:24
 
Aleks8383Дата: Понедельник, 10.12.2012, 10:28 | Сообщение # 10
Группа: Проверенные
Сообщений: 102

Статус: Offline
Вот здесь посмотри как клава подключается,по аналогии и энкодеры подключай,думаю смысл понятен.

 
pchela5Дата: Понедельник, 10.12.2012, 13:32 | Сообщение # 11
Группа: Проверенные
Сообщений: 56

Статус: Offline
Мне навскидку кажется, что при условии, что в один момент крутится одна ручка, можно реализовать так: объединить по одному выводу каждого энкодера и повесить на прерывание, вторые выводы энкодеров завести на 6 входов одного и того же порта. Считывать же не конкретную ногу, а целиком порт, и в зависимости от его состояние - выполнять то или иное действие.
Алгоритм:
После прерывания и антидребезга получили значение порта формата &11101111 (сработал, например 5-ый энкодер), присваиваем флагу значение 16, и потом оператор CASE в помощь.




Сообщение отредактировал pchela5 - Понедельник, 10.12.2012, 13:39
 
topДата: Понедельник, 10.12.2012, 18:41 | Сообщение # 12
Группа: Друзья
Сообщений: 146

Статус: Offline
pchela5, И ведь действительно!

 
Aleks8383Дата: Понедельник, 10.12.2012, 20:26 | Сообщение # 13
Группа: Проверенные
Сообщений: 102

Статус: Offline
exersizze уже про это писал,да и в моей ссылке тоже самое.Повнимательней смотрите что вам пишут.

 
pchela5Дата: Понедельник, 10.12.2012, 20:31 | Сообщение # 14
Группа: Проверенные
Сообщений: 56

Статус: Offline
Камрад, в равной мере это относится к тебе - где ты увидел, что я пишу про диоды?

 
topДата: Понедельник, 10.12.2012, 20:59 | Сообщение # 15
Группа: Друзья
Сообщений: 146

Статус: Offline
Quote (pchela5)
присваиваем флагу значение 16

А я не пойму wacko почему 16?


 
RD3AVJДата: Понедельник, 10.12.2012, 21:28 | Сообщение # 16
Группа: Модераторы
Сообщений: 175

Статус: Offline
mikbur, "задумал изготовить сей девайс..."
Нифига себе! Ты такое потянешь? http://www.youtube.com/watch?v=HARY1CvCGFU
Крутая штука, простите за оффтоп, конечно. Я весной иду на курсы частных пилотов, но летать на настоящей Сесне, по моим подсчетам, немного дешевле wacko


 
exersizzeДата: Понедельник, 10.12.2012, 21:44 | Сообщение # 17
Группа: Администраторы
Сообщений: 716

Статус: Offline
Quote (top)
А я не пойму почему 16?

Ну это наверно для примера, так как в инвертированном варианте &00010000 это и есть 16

Quote (RD3AVJ)
Крутая штука, простите за оффтоп, конечно. Я весной иду на курсы частных пилотов, но летать на настоящей Сесне, по моим подсчетам, немного дешевле

согласен, человек вложился основательно! Но это ж аттракцион получился, за это можно деньги брать biggrin


 
mikburДата: Вторник, 11.12.2012, 02:46 | Сообщение # 18
Группа: Пользователи
Сообщений: 7

Статус: Offline
Quote (pchela5)
Мне навскидку кажется, что при условии, что в один момент крутится одна ручка, можно реализовать так:....


В данном случае не факт, что крутится будет только один а скорее всего несколько


 
mikburДата: Вторник, 11.12.2012, 02:50 | Сообщение # 19
Группа: Пользователи
Сообщений: 7

Статус: Offline
Quote (RD3AVJ)
Нифига себе! Ты такое потянешь? http://www.youtube.com/watch?v=HARY1CvCGFU
Крутая штука, простите за оффтоп, конечно. Я весной иду на курсы частных пилотов, но летать на настоящей Сесне, по моим подсчетам, немного дешевле


Вполне потяну.
В прошлом году специально для этого проекта построил помещение 6м*8м*5м
Сейчас жду когда придет ЧПУ станок для вырезания панелей. (самое сложное во всем этом
сделать РУДы с обратной связью.

ЗЫ: У меня еще он на подвижной платформе будет


 
Aleks8383Дата: Вторник, 11.12.2012, 09:37 | Сообщение # 20
Группа: Проверенные
Сообщений: 102

Статус: Offline
Quote (pchela5)
Камрад, в равной мере это относится к тебе - где ты увидел, что я пишу про диоды?

А причём тут диоды??? Смысл идеи посадить по 1 выводу на прерывание, а остальные на порты. Это повторили 3 раза,я про это и писал.А уже как это сделать это дело второе.


 
pchela5Дата: Вторник, 11.12.2012, 10:58 | Сообщение # 21
Группа: Проверенные
Сообщений: 56

Статус: Offline
Quote (exersizze)
так как в инвертированном варианте &00010000 это и есть 16


Именно это я имел ввиду - проинвертировать значение и по нему делать CASE (так проще считать в программе и выйдет менее затратно по памяти, если применять кучу условий if then). Вспомнил еще про такой оператор, как ON VALUE - лучше применить его - в справке как раз есть пример работы со значением порта - получится достаточно просто и как раз то, что нужно (только надо допилить напильником):

If Portb < 2 Then 'you can also use the portvalue
On Portb Goto G0 , G1
End If
End_prog:

...
G0:
Print "P1 = 0"
Goto End_prog

G1:
Print "P1 = 1"
Goto End_prog

...

Quote (Aleks8383)
А уже как это сделать это дело второе.


Так это и есть то, что спрашивает топикстартер - как это сделать? Я ему и посоветовал - не 6 прерываний и не 6 диодов на одну ножку, а просто параллельно повесить один вывод энкодеров на INT0, а другие - целиком на порт.




Сообщение отредактировал pchela5 - Вторник, 11.12.2012, 11:19
 
Aleks8383Дата: Вторник, 11.12.2012, 12:23 | Сообщение # 22
Группа: Проверенные
Сообщений: 102

Статус: Offline
Quote (pchela5)
не 6 прерываний и не 6 диодов на одну ножку, а просто параллельно повесить один вывод энкодеров на INT0, а другие - целиком на порт.

Да что вы зациклились на диодах,я вообще по них нечего неговорил.А ссылку я привёл как раз так как вы описываете,да там стоят диоды но только чтобы немешать нажатию других кнопок.С энкодарами их можно и не ставить или оставить это нечего не поменяет и не помешает.


 
exersizzeДата: Вторник, 11.12.2012, 15:56 | Сообщение # 23
Группа: Администраторы
Сообщений: 716

Статус: Offline
Quote (mikbur)
Может как-нибудь припендюрить PCF8574 и попробывать через них ?

это просто i2c расширитель портов общего назначения, поэтому выигрыша с ней не будет.

Я бы вообще поставил бы если и не 128-ю мегу, так хотябы 64-ю (у нее тоже 8 прерываний), или на каждую крутилку по тини13 и организовал простенький протокол общения с каждой из них.


 
pchela5Дата: Вторник, 11.12.2012, 17:58 | Сообщение # 24
Группа: Проверенные
Сообщений: 56

Статус: Offline
Quote (exersizze)
на каждую крутилку по тини13 и организовал простенький протокол общения с каждой из них.


Месье понимает толк в извращениях biggrin


 
Aleks8383Дата: Вторник, 11.12.2012, 21:27 | Сообщение # 25
Группа: Проверенные
Сообщений: 102

Статус: Offline
А к стати кроме внешнего вида этого устройства более некакого описания нет ???

 
kip96Дата: Вторник, 11.12.2012, 22:45 | Сообщение # 26
Группа: Свой человек
Сообщений: 166

Статус: Offline
А что мешает опрашивать все шесть энкодеров по таймеру, каждые 256uS?

 
mikburДата: Среда, 12.12.2012, 04:10 | Сообщение # 27
Группа: Пользователи
Сообщений: 7

Статус: Offline
Quote (Aleks8383)
А к стати кроме внешнего вида этого устройства более никакого описания нет ???

Если простыми словами то эта железяка - многокнопочный джостик. Соединяется через rs232 или usb с ПО microsoft flight simulator или Xpalane . Посылает/принимает команды от драйвера и, в зависимости от типа команды, или изменяет переменные в игре, или
исполняет сама какие либо действия (вращает шаговый мотор,сервоприводы, зажигает led индикаторы, управляет внешней нагрузкой...)


 
Aleks8383Дата: Среда, 12.12.2012, 07:56 | Сообщение # 28
Группа: Проверенные
Сообщений: 102

Статус: Offline
Quote (mikbur)
Если простыми словами то эта железяка - многокнопочный джостик

А ясно ,просто думал управление для моделей самолотов,а оказалось для игры.




Сообщение отредактировал Aleks8383 - Среда, 12.12.2012, 07:57
 
Форум » форумы » Общие вопросы по Bascom-AVR » Энкодеры в Bascom
Страница 1 из 11
Поиск: