MIDI контроллер

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

я хочу реализовать самопрограммирование через Sys EX. или как вариант, который совсем не вариант на самом деле, сделать перемычку на контроллере и сделать 2 USB профиля. когда она разомкнута - грузистя миди устройство, замкнута - стартует самопрограмматор. можно поподробнее и примерами кодов и описанием!
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

ну вот. по ссылке выше пройдите и найдете как раз то что описывал.
Даташит - библия моя...
Изображение
Аватара пользователя
UA3MQJ
Грызет канифоль
Сообщения: 275
Зарегистрирован: Вт окт 30, 2007 13:53:01
Откуда: Рыбинск
Контактная информация:

Re: MIDI контроллер

Сообщение UA3MQJ »

Вот что-то читаю http://www.fischl.de/avrusbboot/ и ничего понять не могу.

- кто кого программирует
- как программириует
- какой программой
- в какой момент
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

блин. лююююди! вы хоть даташит откройте:

В даташите написано... Да и на страничке там тоже: "Bootloader fits into 1024 word bootloader block", т.е. МК отведено 1024 слова на бутлоадер. Бутлоадер - это именно программа, которая занимается заливкой по какому-либо интерфейсу программы в память МК если например кнопка нажата. А если не нажата, то просто передает управление той прошивке, что в МК есть.

Стереть его можно, перепрошив МК стандартным способом прошивкой без бутлоадера.

тоесть. замыкаете перемычку(или размыкаете), подключаете по усб к компу и прошиваете через усб интерфейс эту мегу которая подключена, тоесть не через 5 проводков а через усб, проги хз, смотрите лучше по ссылке что указано мной выше а лучше проект Bootloader HID там есть прога. всо. отключаете деваый, размыкаете(или замыкаете) перемычку, девайс стартует ту прошивку которую вы только что залили. тоесть вы шьете не через 5 проводков и собираете отдельый программатор, а шьете через усб сами себя.
Даташит - библия моя...
Изображение
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

Это конечно всё хорошо, но у нас уже есть готовый миди интерфейс. в миди есть специально для таких целей отведённые команды которые находятся в описании Sys Ex! на кой чёрт мутить какие-то перемычки?! По сриходу спец пообщения контроллер переключается в режим прошивания и по томуже протоколу Sys Ex заливает в себя данные!!! Вот как делают во всех нормальных устройствах! Я прошу исходный код функции, которая переключает контроллер в режим самопрошивка и записывает в него передаваемые в неё(функцию) байты!!! вот и всё! я никогда этим не занимался, посему прошу вашей помощи, т.к. вы знаете это лучше меня и выложть исхрдник ИМЕННО ЭТОЙ функции для знающего проблему человека будет куда проще чем мне копать непонятные коды!

З.Ы.
и не надо посылать куда подальше на разные ссылки это я и сам видел, и еслиб я понимал как оно на уровне кода работает выдрал бы уже сам эти функции и написал вам уже готовое решение! ДАВАЙТЕ ПАРНИ ПОРАБОТАЕМ ВМЕСТЕ и всё получится!

обработку миди протокола я сделаю!

З.З.Ы.
нужен ответ порядка:
вот исходный код функции SetToSelfProgramming. передаём такието данные, происходит инициализация конроллера на самлпрограммиромание.
функция (например) WriteByte входные данные байт и что-то.
Функция CloseWrite. завершает прошивку и перезапускает контроллер.

Можем так сделать?

программу для прошивки с компа тоже беру на себя! могу сделать на Delphi, а могу попробовать и на QT, чтоб шла на винде маке и линусе. на такой миди библиотеке можно будет делать уже нормальные полноценные серийные устройства!!!
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

эээ :shock: нипонял. тебе в любом случае нужен бут режим. потому что только через него ты можешь прошить контроллер способом сам себя. а функции еще раз, повторю, открывай исходники тех проектов и смотри. там все комментировано. мы просто говорим о разных вещах. ты хочешь прошить контроллер стандартными миди командамами,, или какимито Sys EX, а я говорю что этого не получится.

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

ссылки по поводу написания и про загрузчик, и функции тебе там:
1. http://easyelectronics.ru/avr-uchebnyj- ... adera.html
2. http://easyelectronics.ru/sozdanie-bootloadera.html

первую ссылку читать обязательно и досконально! вторую без нее не начинайте даже!
Даташит - библия моя...
Изображение
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

Ок, алгоритм такой:

берём контроллер с заведомо большим объёмом флэш памяти.
создаём в конечной области памяти контроллера место для загрузки новой прошивки.

1) контроллер стартует с бутлоадера.
если в месте отведённом под новую прошивку пусто то стартуем основную программу.

2) если в процессе работы основной программы приходит команда (по томуже миди через его расширение SysEX) о начале загрузки новой прошивки, то останавливаем обработку железа и запускаскаем функцию которая будет читать из миди сообщений байты и писать их в зарезервированную область.

3) по завершению загрузки новой прошивки перезагружаемся.

4) снова стартует бутлоадер, видит что в зарезервированном месте есть новая прошивка и заменяет ей текущую.
по завершению очищаем зарезервированную область и снова перезагружаемся.

5) снова стартуе бутлоадер, смнотрит что в зарезервированном месте пусто и стартует основную, уже обновлённую, программу.

вот что-то типа того. чего здесь невозможного? или я в чём то ошибаюсь?
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

расписываю как это дело обстоит в нормальных и рабочих вещах неоднократно проверенных:

1. посылаем пусть по тому же Sys Ex(кто нибуть объяснит вообще что это?) команду о том что сейчас нам придет новая прошивка.
2. контроллер принимает. в ответ шлет команды готовности и ждет прихода данных, при этом блокируя все остальное.
3. как только поступают данные, он сразу их пишет во внешнюю память EEPROM.

объясняю популярно почему он не может сразу сам в себя записать, дело в том что тогда мы начнем затирать старую прошивку которая будет принимать данные и записывать новую, а программа же выполняется циклично то, когда цикл дойдет до того места где уже новая прошивка, а там уже совсем другие условия, он просто перестанет осознавать что делает, и вероятно перестанет принимать новую прошивку и уйдет в рестарт и неизвестно вообще будет ли работать.

итак записали в EEPROM.
4. в ту же память пишем бит о том что новая прошивка поступила.
5. перезапускаем камень. вкл выкл питание.
6. камень стартует в бут область, читает из EEPROM бит о новой прошивке, если он стоит, то он переходит в режим программирования, считывает данные и затирает старую прошивку(при этом бут остается нетронутым а старые данные основной прошивки удаляются), и ставит бит о новой прошивки в 0, и передает управление на основной код.

этот метод очень часто практикуется. я думаю что в нормальных MIDI контроллерах не далеко ушли от этого принципа.

ЗЫ. зачем выделять какуюто область памяти и брать камень с такими большими размерами, когда можно поставить маленькую дешовую микрушку и тогда код становится универсальным для большинства ряда камней, и не надо считать размеры выделять память. и останавливать железо. тем более если ты его остановишь, тебе придется тогда остановить v-usb протокол. в общем гемора много. имхо. лучше проверенные вещи чем деревянный велосипед в данном моменте.
Даташит - библия моя...
Изображение
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

в этом варианте придётся перезвапустить контроллер, посему хост его тут-же потеряет и ему придётся заново искать устройство! это раз!
Два! придётся дважды дублировать библиотеку в-юсб: один раз для бутлодера, второй для программы!
Три! сам такой способ не является юзер френдли.

Нам достаточно выделить в конце область памяти в 4-8 кб во флэш памяти, которая заведомо не будет использована нашей прошивкой. Я не думаю что для 16й а тем более 32й меги это так уж критично! И совсем не обязательно перезаписывать память с 0 бита! Можно переписывать только ту область (те 4-8кб) которые мы заранее отвели! этим мы исключим затирание нашей текущей программы. По завершению бутлоадеру будет достаточно лишь переписать даннные из той области в начальную область! всё! в чём здесь проблема то?!

причём при остановке железа я не имелл ввиду остановку в-юсб! достаточно остановить обработку данных ацп, передачу в юарт и прочую байду не связанную с прошивкой!

З.Ы. И причём если произойдёт сбой при передаче данных в варианте прошивки бутлоадером устройство будет негодным к употреблению и здесь без программатора уже не обойдёшься. (конечно можно сделать проверку хостом режима в котором работает устройство и повторить передачу но это опять-же ненужный лишний геморой) в моём же варианте основная программа останется нетронутой и будет возможность проверить контрольную сумму перед переносом в основную память.
Последний раз редактировалось EternalEngine Сб май 29, 2010 16:35:33, всего редактировалось 2 раза.
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

зачем для бута то делать усб. когда его задача состоит в том чтобы просто записать новую прошивку и передать ей управление, а там уже будет и усб и миди и блек джек со шлюхами.
перезапускать(вклвыкл питание делать) кстати не обязательно, есть такая вещь в асме как jmp на определенный адрес. дальше понятно к чему идем.
в твоем варианте тоже не без перезапуска, поскольку когда он будет шить новую прошивку а потом ее запускать, в библиотеке v-uсб предусмотрен программный дисконнект кабеля, так что в любом случае нужно будет искать заново девайс.

ахахах))) и в чем же по твоему юзерфрендли??
Даташит - библия моя...
Изображение
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

к слову о SysEx

Системные эксклюзивные сообщения (обозначаемые для краткости SysEx) — это своеобразная палочка-выручалочка для производителей устройств. Сегодня на рынке существует множество типов оборудования, и каждый конкретный прибор имеет свои специфические возможности. Организации MMA и JMSC могли пойти по пути постоянных обновлений спецификации MIDI: появилась какая-то новая функция, скажем, в дымовой машине — выделить под нее новое сообщение и занести в стандарт. Понятно, что это тупиковый путь. За всем не уследишь, а абсолютной совместимости между устройствами все равно не добиться (да и какая совместимость может быть у дымовой машины и синтезатора?). Поэтому было решено дать возможность каждому производителю определять свои собственные (эксклюзивные, исключительные) сообщения, даже под конкретное устройство.

Представьте, что, например, фирма Roland выпустила новый звуковой модуль с необычной функцией. Для управления этой функцией нет стандартного голосового сообщения, предусмотренного спецификацией MIDI. Что делает фирма Roland? Она придумывает свое эксклюзивное сообщение, с помощью которого и происходит управление функцией. Для того, чтобы эксклюзивные сообщения одних фирм не мешали другим, каждый производитель получает свой уникальный идентификатор и использует его в заголовке сообщения. Так что звуковой модуль, скажем, фирмы Yamaha, увидев в заголовке сообщения SysEx идентификатор Roland, говорит себе: "Так, это не для меня, я тут все равно ничего не пойму, пропускаю все сообщение".

Несколько сообщений SysEx являются универсальными и поддерживаются устройствами разных производителей. Эти сообщения применяются для настройки таких параметров тон-генератора, как общая громкость и панорама, а также для реализации дополнительных протоколов в рамках MIDI, например, протокола передачи семплов (MIDI Sample Dump Standard), управления сценическим светом и пиротехническими устройствами (MIDI Show Control), управления транспортными функциями оборудования (MIDI Machine Control).

Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

VenomXP писал(а):зачем для бута то делать усб. когда его задача состоит в том чтобы просто записать новую прошивку и передать ей управление, а там уже будет и усб и миди и блек джек со шлюхами.
перезапускать(вклвыкл питание делать) кстати не обязательно, есть такая вещь в асме как jmp на определенный адрес. дальше понятно к чему идем.
в твоем варианте тоже не без перезапуска, поскольку когда он будет шить новую прошивку а потом ее запускать, в библиотеке v-uсб предусмотрен программный дисконнект кабеля, так что в любом случае нужно будет искать заново девайс.

ахахах))) и в чем же по твоему юзерфрендли??


я и не хочу для бута делать юсб, всё правильно, его задача считать из одного места и переписать в другое.
в твоём случае устройство определится сначала как стандартное миди, потом как программатор (или хз как ещё), и потом опять как устройство. хост от такого безобразия может повесится. :))

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

теперь о юзер френдли. предположим я глух нем и туп и по пьяни залил в контроллер битую прошивку или ещё какую нить левую хрень (такое конечно редкость, но с некоторыми далёкими от дел железных индивидами происходит систематически),
то в твоэм случае устройство будет не функционально. в моём же старая прошивка останется нетронутой. и утройством можно будет пользоваться даже в случае если прошивка была неуспешной.
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

так. я понял для чего тебе это надо. но то о чем говорили сейчас было одним и темже, только в твоем случае ты используешь память программ контроллера, а я внешнюю. :dont_know:

в общем. мне нужно то вообще всего лишь миди фут свитч, чтобы обновить прошивку меня не обломает сделать штырьки и вставить разъем программатора. и прошить. я почти его сделал и уже готов забыть о миди. но если нужна помощь, по кодингу или еще как-то в этом направлении обращайтесь всегда на связи. :)
Даташит - библия моя...
Изображение
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

ага, говорили об одном и том-же ток разными словами) :))

я хочу сделать универсальную библиотеку для построения серийных устройств (таких как миди клавиатуры, драм машины, синтезаторы итп.) я лично делаю аналоговый синт, вот UA3MQJ делает драм станцию, думаю эта библиотека будет полезна многим даерам из рунета и не только) я призываю к совместному творчеству.

в данном случае нам нужна помощь такого человека как ты. давай составим план действий :beer: твои предложения. чего возьмём за основу?

вот я уже скидывал про SysEX подробно
http://www.muzoborudovanie.ru/articles/midi/midi3.php
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Re: MIDI контроллер

Сообщение VenomXP »

ну во первых что требуется:
1. какая база: элементная и программная?
2. для каких нужд?
3. нарисуй картину общую хотя бы пары устройств и что ты хочешь добиться от них: симбиоз, то какой, совместимость, то какая,

:shock: так с бухты барахты кидаться на задачу не стоит.
Даташит - библия моя...
Изображение
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re: MIDI контроллер

Сообщение EternalEngine »

Для любых нужд.
Бутлодер должен быть аппаратно независимым.

1. сначала предлагаю написать бутлодер, целью которого будет загружаться при старте системы и проверять зарезервированную область памяти на наличие в ней кода (можно там поставить флаг). железо он никакое инициализировать не должен.
его задача:

стартовать->проверить резервную область на наличие новой прошивки->

если область пуста->передаём управление основной программе.

если в области есть данные -> проверяем контрольную сумму -> переписываем их в начало адресаного пространства (если не ошибаюсь то с 0х0000)->заполняем зарезервированную область нулями->передаём управление основной программе.

я смотрел на эту тему гугл, там ничего нужного не нашёл (слишком громоздкие там конструкции) на самом деле нужна лишь функция которая читает ячейку с определённым адресом и функция которая пишет в ячейку с определённым адресом. как их оттуда отковырять так и не понял, поэтому надо писать с 0, благо там немного.

2. теперь о наборе функций (предлагаю оформить в отдельный файл) которые потребуются для заливка данных с компа:
(сразу оговорюсь что вместо SysEx могут быть использованы любые другие сообщения, но в данном конкретном случае делать будем именно из расчёта на них и протокол MIDI).

по приходу специального SysEx "update firmware" с компа -> останавливаем всё железо кроме V-USB. -> шлём в хост подтверждение готовности SysEx "ready to update firmware" ->
ждём прихода SysEx "data packedge" с пакетом данных -> пишем в нашу область данные -> посылаем запрос для следующей порцтт данных SysEX "wait for next packedge" - > и так по циклу пока не получим вместо "data packedge" сообщение "transfer compleed" -> и "control sum" -> считаем контрольную сумму того что поназаписывали в память и сравниваем с той что пришла в сообщении ->

если не совпадает -> шлём сообщение "update falure" -> чистим зарезервированную область памяти -> шлём сообщение "devise reset" о том что сейчас перезагрузимся, чтоб хост не сеял паннику -> ждём пару секунд, чтоб хост успел оьрубить соединение и перезагружаемся. ->

если совпадает -> шлём сообщение "update compleed" -> переносим данные в начало адресного пространства -> чистим зарезервированную область памяти -> шлём сообщение "devise reset" о том что сейчас перезагрузимся, -> ждём пару секунд и перезагружаемся.

вместо виртуального миди можно использовать реальный миди, дабы на время отладки исключить возможные косяки с v-usb,
а лучше вобще поиграться через терминал эмулируя миди команды (один хрен откуда будут поступать данные на время отладки).

на выходе мы должны получить бутлоадер и библиотеку функций записи/чтения памяти по заданному адресу, которые можно прикрутить к любому устройству и встроить в любую программу.

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

да, и вот ещё что список кодов для SysEx команд напишу чуть позже, давайте рассмотрим концепцию в целом.
пока скажу лиш только что построение их такое: начинаются с 0xF0 + ID производителя (0x7D для некомерческого использования) + сколь угодно данных (в них ще и код команды) + 0xF7 (конец команды, можно и не писать)
Аватара пользователя
EternalEngine
Грызет канифоль
Сообщения: 266
Зарегистрирован: Пн фев 02, 2009 08:19:53
Откуда: Москва
Контактная информация:

Re:

Сообщение EternalEngine »

_noise писал(а):Господа коллеги, вы б того этого... поиском чучуть. На тему бутлоадеров.
В смысле что тут отдельно про это уже есть где, дабы не валить в кучу с <темы заглавие>.


этот бутлоадер создаётся конкретно к этому устройству, хотя и может быть использован в любом другом, так что полагаю лучше обсуждать обновление прошивки midi контроллера посредством usb в теме о midi контроллере посредством usb.

_noise писал(а):Ну и даташит всё такое. Хоть с командами читать-писать-программ-память ознакомиться минимально.
А то уже сильно много букв. Подозрение закрадывается, что оно не настолько хитро, как про него писанина.


там всё китайцы писали - русскому уму не понять, уже пробовал. буду признателен если сможете разъяснить так чтоб больше по этой теме вопросов не возникало, а лучше дать пример :)

_noise писал(а):(про официал миди списификатион повторные напоминания неуместными полагаю, для тех, кто ещё не.)


уже сам запарился по третьему разу выкладывать ссылку на каждую главу статьи, меня просто по третьему разу одно и тоже спрашивают, посему приходится давать прямую ссылку чуть ли не на каждое слово :cry:

извиняюсь за оффтоп
rokower
Родился
Сообщения: 2
Зарегистрирован: Пт мар 19, 2010 08:51:57

Re: MIDI контроллер

Сообщение rokower »

КАК ВАМ ТАКОЙ ПРОЕКТ:
http://www.auroramixer.com/
bakae
Родился
Сообщения: 4
Зарегистрирован: Сб июл 03, 2010 15:20:00

Re: MIDI контроллер

Сообщение bakae »

Мне хотелось бы собрать контролер полностью дублирующий всем известную программу VDJ, применив например DG-12232-01S2FBEB для индикации пиков, и несколько DC-10EWA для инициации положения трека + кнопочки + диодики +переменники. С контролерами никогда дела не имел, хотя в этом не вижу проблемы(за исключением програмирования, но готов учится). Вопросы:
Стоит ли за это браться, при условии что это мой первый микроконтролерный проект?
Какой тип контролера применить(чувствую здесь не одним пахнет), чтоб реализовать усб интерфейс?
Могу ли расчитывать на вашу помощь?
Спасибо
Вложения
dj.jpg
(58.99 КБ) 958 скачиваний
Аватара пользователя
khomych
Мучитель микросхем
Сообщения: 423
Зарегистрирован: Сб фев 21, 2009 16:11:32
Откуда: Харьков
Контактная информация:

Re: MIDI контроллер

Сообщение khomych »

браться за проект стоит в любом случае. но не советую сразу лесть на ЮСБ и прочие "вкуснышки" - начинать надо с малого и грызть азы. если есть вход МИДИ на мамке/звуковухе - начать бы с него. сделать контроллер под чистый миди, вылизать исходник, вылизать железо, потом уже на ЮСБ лезть.
на помощь рассчитывать можешь всегда. на то он и форум. радиокоты на подхвате!
Ответить

Вернуться в «Интеграция с ПК»