
DIYFACTORY.RU |
ФОРУМ |
УЧАСТНИКИ |
ПОМОЩЬ |
КАЛЕНДАРЬ |
ПОИСК |
ГАЛЕРЕЯ |
ФАЙЛЫ |
ПРАВИЛА |
РЕПУТАЦИЯ
|
Здравствуйте Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
![]() ![]() ![]() |
EternalEngine |
Дата 20.10.2009 - 13:30
|
Unregistered ќткуда: ![]() |
Хочу сделать интерфейс для синта на энкодерах типа того что на картинке.
Чувствую что изобретаю велосипед, так что нужна ваша помощь. Моя идея такова: На каждый контроллер поставить инкрементный энкодер + mega48 + 10 светодиодов. Все их привязать по SPI к центральному контроллеру который будет генерировать MIDI сообщения. Вопрос номер раз. Хватит ли 24 тика на оборот для регулировки таких параметров как Cutof, Attac, Decay, и т.п.. Вопрос номер два. Потянет ли SPI порт Меги ~50 таких контроллеров. Вопрос номер три. Можно ли сделать как нибудь проще. Ну и самый главный вопрос - где взять дешёвые энкодеры на 24 (а лучше больше) тиков? Присоединённый файл ( Кол-во скачиваний: 49 ) ![]() |
|
Diz |
Дата 20.10.2009 - 14:44
|
Unregistered ќткуда: ![]() |
Проще купить готовый контроллер, типа того же бехра (использовать в чистом виде, либо допилить).
Целый МК на энкодер как-то разорительно - можно ведь повесить несколько энкодеров на МК. Либо, если частоты опроса хватит(надо прикидывать), то прямо посадить энкодеры на сдвиговые регистры '165, а светодиоды на '595 и обойтись одним МК. Пропуски при быстром вращении для миди-управлялки не особо критичны. Если взять энкодеры с кнопкой, то можно использовать ее для плавного/грубого режима. Нажали и крутим - большие скачки параметров, отпустили - маленькие. Или наоборот. Можно применить вот такие энкодеры(сам дела не имел). http://www.platan.ru/cgi-bin/qwery.pl/id=3...166&group=32405 |
|
EternalEngine |
Дата 20.10.2009 - 20:16
|
Unregistered ќткуда: ![]() |
Спасибо! Я эти энкодеры минимум по 80р находил.)
вобще должно получиться что-то типа: Присоединённый файл ( Кол-во скачиваний: 34 ) ![]() |
|
EternalEngine |
Дата 20.10.2009 - 20:59
|
Unregistered ќткуда: ![]() |
Как ни странно, но с регистрами дороже выходит и корпусов больше в 8 раз.)
Выходит придётся делать по контроллеру на каждую группу (20 штук). SPI порт меги вытянет такую нагрузку? Да и кстати не можешь просветить по поводу работы SPI меги в ведомом режиме? Алгоритм такой: Центральный контроллер посыляет запрос (8 бит) В ведомом контроллере срабатывает прерывание и готовится пакет для отправки (16 бит) и записывается в регистр. Центральный контроллер посылает запрос на приём данных и сдвишгает регистр. Всё. Ждём следующего опроса. Если есть пример работы по прерыванию SPI то я был бы очень признателен, т.к. со слэйв режимом ни разу дела не имел. |
|
EternalEngine |
Дата 20.10.2009 - 23:53
|
Unregistered ќткуда: ![]() |
Или можно сделать как вариант по подобию норд лида.
Обычный потенциометр со шкалой. Тогда вопрос - выдержит ли 74hc595 8 светодиодов? и сколько таких регистров можно повесить параллельно на порт меги? Это сообщение отредактировал EternalEngine - 20.10.2009 - 23:58 Присоединённый файл ( Кол-во скачиваний: 27 ) ![]() |
|
Diz |
Дата 21.10.2009 - 08:59
|
Unregistered ќткуда: ![]() |
SPI потянет, но, возможно, не на максимальной скорости из-за возросшей емкости линии. Но всегда можно поставить на линию один-два буфера типа '125 и разгрузить порт.
SPI на прерываниях на avr никогда не делал, смысла не вижу. Если работать на максимальной скорости, то байт уходит за 16 тактов - этого едва хватит, чтобы нормально войти-выйти из прерывания :-) Насчет алгоритма обрати еще внимание на I2C-шину. Скорость будет гораздо ниже (что не критично), зато получишь автоматом адресацию/синхронизацию. Командуешь 'слейв номер 8, сообщите значение энкодера 3'. И клокаешь/выгребаешь. Все за одну транзакцию. Если с I2C eeprom работал, то примерно так же. 8 светодиодов '595 выдержит. Чтение даташита вслух 5$ :-) Ток через пин <20 мА, суммарный ток <75 мА. Если на каждый светодиод заложить 3-4 мА, то нормально. Если мало, можно поставить TPIC6C595 (там мощные выходы с открытом стоком). Либо '595 + ULN2003. Это сообщение отредактировал Diz - 21.10.2009 - 08:59 |
|
![]() |
![]() ![]() ![]() |