Энкодеры в 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 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Что-то и впрямь много энкодеров, прерываний на всех не хватит Придется опрашивать каждый энкодер вручную (т.е. программно). Может тогда использовать одно прерывание на всех? Суть в том чтобы соединить один из выходов энкодера вместе с остальными и посадить через диод на прерывание. Затем по срабатыванию в обработчике прерываний проверить с какой ноги пришло прерывание (для этого и понадобятся диоды на каждой ноге) и затем обработать энкодер как обычно.
|
|
| |
mikbur | Дата: Суббота, 08.12.2012, 23:00 | Сообщение # 4 |
Группа: Пользователи
Сообщений: 7
Статус: Offline
| Quote (RD3AVJ) а Вы уверены в необходимости такого количества энкодеров? Может поделитесь задумкой? Порешаем этот вопрос по другому?
Задумал изготовить сей девайс: http://www.opencockpits.com/catalog/mcp-737ng-v2-pi-110.html?image=2 Уже собрал плату индикации и плату входов для кнопоки все уперлось в эти энкодеры
Сообщение отредактировал 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 |
Группа: Администраторы
Сообщений: 723
Статус: 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 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Вот здесь посмотри как клава подключается,по аналогии и энкодеры подключай,думаю смысл понятен.
|
|
| |
pchela5 | Дата: Понедельник, 10.12.2012, 13:32 | Сообщение # 11 |
Группа: Свой человек
Сообщений: 85
Статус: 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 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| exersizze уже про это писал,да и в моей ссылке тоже самое.Повнимательней смотрите что вам пишут.
|
|
| |
pchela5 | Дата: Понедельник, 10.12.2012, 20:31 | Сообщение # 14 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Камрад, в равной мере это относится к тебе - где ты увидел, что я пишу про диоды?
|
|
| |
top | Дата: Понедельник, 10.12.2012, 20:59 | Сообщение # 15 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Quote (pchela5) присваиваем флагу значение 16 А я не пойму почему 16?
|
|
| |
RD3AVJ | Дата: Понедельник, 10.12.2012, 21:28 | Сообщение # 16 |
Группа: Свой человек
Сообщений: 175
Статус: Offline
| mikbur, "задумал изготовить сей девайс..." Нифига себе! Ты такое потянешь? http://www.youtube.com/watch?v=HARY1CvCGFU Крутая штука, простите за оффтоп, конечно. Я весной иду на курсы частных пилотов, но летать на настоящей Сесне, по моим подсчетам, немного дешевле
|
|
| |
exersizze | Дата: Понедельник, 10.12.2012, 21:44 | Сообщение # 17 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Quote (top) А я не пойму почему 16? Ну это наверно для примера, так как в инвертированном варианте &00010000 это и есть 16
Quote (RD3AVJ) Крутая штука, простите за оффтоп, конечно. Я весной иду на курсы частных пилотов, но летать на настоящей Сесне, по моим подсчетам, немного дешевле согласен, человек вложился основательно! Но это ж аттракцион получился, за это можно деньги брать
|
|
| |
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 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Quote (pchela5) Камрад, в равной мере это относится к тебе - где ты увидел, что я пишу про диоды? А причём тут диоды??? Смысл идеи посадить по 1 выводу на прерывание, а остальные на порты. Это повторили 3 раза,я про это и писал.А уже как это сделать это дело второе.
|
|
| |
pchela5 | Дата: Вторник, 11.12.2012, 10:58 | Сообщение # 21 |
Группа: Свой человек
Сообщений: 85
Статус: 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 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Quote (pchela5) не 6 прерываний и не 6 диодов на одну ножку, а просто параллельно повесить один вывод энкодеров на INT0, а другие - целиком на порт. Да что вы зациклились на диодах,я вообще по них нечего неговорил.А ссылку я привёл как раз так как вы описываете,да там стоят диоды но только чтобы немешать нажатию других кнопок.С энкодарами их можно и не ставить или оставить это нечего не поменяет и не помешает.
|
|
| |
exersizze | Дата: Вторник, 11.12.2012, 15:56 | Сообщение # 23 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Quote (mikbur) Может как-нибудь припендюрить PCF8574 и попробывать через них ? это просто i2c расширитель портов общего назначения, поэтому выигрыша с ней не будет.
Я бы вообще поставил бы если и не 128-ю мегу, так хотябы 64-ю (у нее тоже 8 прерываний), или на каждую крутилку по тини13 и организовал простенький протокол общения с каждой из них.
|
|
| |
pchela5 | Дата: Вторник, 11.12.2012, 17:58 | Сообщение # 24 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Quote (exersizze) на каждую крутилку по тини13 и организовал простенький протокол общения с каждой из них.
Месье понимает толк в извращениях
|
|
| |
Aleks8383 | Дата: Вторник, 11.12.2012, 21:27 | Сообщение # 25 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| А к стати кроме внешнего вида этого устройства более некакого описания нет ???
|
|
| |
kip96 | Дата: Вторник, 11.12.2012, 22:45 | Сообщение # 26 |
Группа: Свой человек
Сообщений: 170
Статус: 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 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Quote (mikbur) Если простыми словами то эта железяка - многокнопочный джостик А ясно ,просто думал управление для моделей самолотов,а оказалось для игры.
Сообщение отредактировал Aleks8383 - Среда, 12.12.2012, 07:57 |
|
| |