| 
				
				Энкодеры в 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 |  
 
Группа: Администраторы 
 
Сообщений: 720 
 
 
Статус: 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 |  
 
Группа: Администраторы 
 
Сообщений: 720 
 
 
Статус: 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 |  
| 
 Группа: Свой человек 
 
Сообщений: 84 
 
 
Статус: 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 |  
| 
 Группа: Свой человек 
 
Сообщений: 84 
 
 
Статус: 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 |  
 
Группа: Администраторы 
 
Сообщений: 720 
 
 
Статус: 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 |  
| 
 Группа: Проверенные 
 
Сообщений: 102 
 
 
Статус: Offline 
 
 | Quote (pchela5) Камрад, в равной мере это относится к тебе - где ты увидел, что я пишу про диоды?     А причём тут диоды??? Смысл идеи посадить по 1 выводу на прерывание, а остальные на порты. Это повторили 3 раза,я про это и писал.А уже как это сделать это дело второе.
 
  
 |  
 
 |   | 
  |    | 
| pchela5 | Дата: Вторник, 11.12.2012, 10:58 | Сообщение # 21 |  
| 
 Группа: Свой человек 
 
Сообщений: 84 
 
 
Статус: 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 |  
 
Группа: Администраторы 
 
Сообщений: 720 
 
 
Статус: Offline 
 
 | Quote (mikbur) Может как-нибудь припендюрить PCF8574 и попробывать через них ?      это просто i2c расширитель портов общего назначения, поэтому выигрыша с ней не будет. 
   Я бы вообще поставил бы если и не 128-ю мегу, так хотябы 64-ю (у нее тоже 8 прерываний), или на каждую крутилку по тини13 и организовал простенький протокол общения с каждой из них.
 
  
 |  
 
 |   | 
  |    | 
| pchela5 | Дата: Вторник, 11.12.2012, 17:58 | Сообщение # 24 |  
| 
 Группа: Свой человек 
 
Сообщений: 84 
 
 
Статус: Offline 
 
 | Quote (exersizze) на каждую крутилку по тини13 и организовал простенький протокол общения с каждой из них.   
   Месье понимает толк в извращениях  
 
  
 |  
 
 |   | 
  |    | 
| Aleks8383 | Дата: Вторник, 11.12.2012, 21:27 | Сообщение # 25 |  
| 
 Группа: Проверенные 
 
Сообщений: 102 
 
 
Статус: 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 |  
| 
 Группа: Проверенные 
 
Сообщений: 102 
 
 
Статус: Offline 
 
 | Quote (mikbur) Если простыми словами то эта железяка - многокнопочный джостик     А ясно ,просто думал управление для моделей самолотов,а оказалось для игры.
 
  
 
 Сообщение отредактировал Aleks8383 - Среда, 12.12.2012, 07:57  |  
 
 |   | 
  |    |