MIDI контроллер
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Да. С питанием там было что-то, но я просто разремарил и все.
А с FLStudio разобрался - все в норме. Единственное, что тормоза какие-то пару раз возникали при начале воспроизведения, может просто контроллер захлебывался пересялая большие объемы по КОМ порту обратно.
FL при остановке вообще все ноты на всех каналах ставит в ноль, похоже. И еще кучу каких-то параметров передает.
Гитарриг посмотрю. К сожалению ни вчера, ни позавчера времени не было заниматься проектом.
А с FLStudio разобрался - все в норме. Единственное, что тормоза какие-то пару раз возникали при начале воспроизведения, может просто контроллер захлебывался пересялая большие объемы по КОМ порту обратно.
FL при остановке вообще все ноты на всех каналах ставит в ноль, похоже. И еще кучу каких-то параметров передает.
Гитарриг посмотрю. К сожалению ни вчера, ни позавчера времени не было заниматься проектом.
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
ок. буду ждать результатов.
я тут подумываю идею, переписать дискриптор на Audio интерфейс с микрофоном, то есть по сути звуковуха, вот только, вопрос, не захлебнется ли контроллер в передаче данных, хотя если настроить АЦП на частоту 48 кгц, можно будет слать по усб, или я ошибаюсь?
я тут подумываю идею, переписать дискриптор на Audio интерфейс с микрофоном, то есть по сути звуковуха, вот только, вопрос, не захлебнется ли контроллер в передаче данных, хотя если настроить АЦП на частоту 48 кгц, можно будет слать по усб, или я ошибаюсь?
Даташит - библия моя...


- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Да. Я об этом подумывал, но ума пока не хватает. Было бы интересно узнать на сколько там трудно это все.
О реальности ничего сказать не могу, но может информация будет полезной: есть у меня USB карточка которая может 16/24 бит и 48/96/192 КГц. Так вот, если она подключается к USB 1.1, то выше 48 выставить драйвера не позволяют.
О реальности ничего сказать не могу, но может информация будет полезной: есть у меня USB карточка которая может 16/24 бит и 48/96/192 КГц. Так вот, если она подключается к USB 1.1, то выше 48 выставить драйвера не позволяют.
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
да умато там много не надо прям из спецификации пишешь и все custom дискриптор. вот только надо определить с передачей данных. но это круить спецификации надо. еще бы ASIO сделать поддержку.
а для USB 1.1 сколько бит максимум или не имеет значение? так то шас вопрос стоит использовать ацп который на борту у мег или внешку со сгоревшей звуковухи.
а для USB 1.1 сколько бит максимум или не имеет значение? так то шас вопрос стоит использовать ацп который на борту у мег или внешку со сгоревшей звуковухи.
Даташит - библия моя...


- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Про битность в таких условиях вопросом не задавался, поэтому ничего не могу сказать.
Может проще попробовать сначала отправку на хост? Для отправки ресурсов надо меньше.
Но мне думается, что там надо будет описывать какие-нибудь механизмы обработки начала/конца записи...
В общем даже и не представляю как там что.
Может проще попробовать сначала отправку на хост? Для отправки ресурсов надо меньше.
Но мне думается, что там надо будет описывать какие-нибудь механизмы обработки начала/конца записи...
В общем даже и не представляю как там что.
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Пытаюсь сейчас разобраться сделать дескриптор с двумя кабелями.
Если использовать дескриптор который мы все имеем, то получается только один кабель.
Устройство может открыть только одна программа.
На данный момент дескриптор всетаки домучал.
Если EternalEngine не возражает, то могу выложить код дескриптора с двумя кабелями.
В чем проявляется двухкабельность?
В списке устройств в "Мой компьютер" устройство как было, так и будет одно.
Но, если в программе работающей с миди смотрим список устройств, то их будет по два
на вход и два на выход:
Аудио устройства USB
Аудио устройства USB [2]
А теперь о плохом. При выводе на второе устройство - контроллер ничего не принимает. Наверное надо ковырять endpoint'ы.
UPD: Ура! Разобрался!!!
Если использовать дескриптор который мы все имеем, то получается только один кабель.
Устройство может открыть только одна программа.
На данный момент дескриптор всетаки домучал.
Если EternalEngine не возражает, то могу выложить код дескриптора с двумя кабелями.
В чем проявляется двухкабельность?
В списке устройств в "Мой компьютер" устройство как было, так и будет одно.
Но, если в программе работающей с миди смотрим список устройств, то их будет по два
на вход и два на выход:
Аудио устройства USB
Аудио устройства USB [2]
А теперь о плохом. При выводе на второе устройство - контроллер ничего не принимает. Наверное надо ковырять endpoint'ы.
UPD: Ура! Разобрался!!!
- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
каналы используются во всех канальных сообщениях. почти все сообщения включая sysex так-же являются канальными. исключения составляют только широковещательные сообщения. я же давал ссылку выше - там ВСЁ ДОСТУПНО НАПИСАНО!
на счёт мультиплексирования ШИМ есть специальные ячейки, называются SAMPLE & HOLD. всё что нужно - 155ИД3 и 16 LF298/398. и один выход чудестным образом превращается в 16 выходов. подробнее читать в гугле, и да поможет вам ctrl+f!
на счёт дескриптора:
отлично!
конечно выкладывай, секретным был только исходный материал)
2 устройства в диспетчере отображаться не будут тк оно одно и сидит на одной конечной точке. по спецификации usb class for midi device количество виртуальных кабелей можно увеличить (таким же добавлением по 4 джека) до 16 штук, правда здесь есть свои подводные камни: теоретически в спецификации должен быть использован full speed интерфейс на 12 мегабит/с. посему если использовать все 16 кабелей на 31250 бит/с выйдет 500 кбит/с, что для low speed (принимая во внимание тот факт, что usb протокол гоняет очень много служебной информации) это будет впритык. да и AVR вполне может захлебнуться (а скорее всего и захлебнётся) от такого объёма данных.
З.Ы.
датащит на S&H могу скинуть на мыло, хотя их и в инете полным полно!
З.З.Ы. идею с аудио девайсом считаю заранее провальной, тк здесь без арма не разберёшься. есть конечно вариант настройть один контроллер на работу с usb, второй на приём и обработку данных с внешнего ADC/DAC, но это имхо редкостное извращение. тем более, насколько мне известно, стандартного драйвера под ASIO нет!
З.З.З.Ы
VenomXP вот тут прикрепил кое какие компоненты для работы с midi в Delphi и откомпиллировал тебе MIDIMON, правда хз заработает ли через wine.
на счёт мультиплексирования ШИМ есть специальные ячейки, называются SAMPLE & HOLD. всё что нужно - 155ИД3 и 16 LF298/398. и один выход чудестным образом превращается в 16 выходов. подробнее читать в гугле, и да поможет вам ctrl+f!
на счёт дескриптора:
отлично!
2 устройства в диспетчере отображаться не будут тк оно одно и сидит на одной конечной точке. по спецификации usb class for midi device количество виртуальных кабелей можно увеличить (таким же добавлением по 4 джека) до 16 штук, правда здесь есть свои подводные камни: теоретически в спецификации должен быть использован full speed интерфейс на 12 мегабит/с. посему если использовать все 16 кабелей на 31250 бит/с выйдет 500 кбит/с, что для low speed (принимая во внимание тот факт, что usb протокол гоняет очень много служебной информации) это будет впритык. да и AVR вполне может захлебнуться (а скорее всего и захлебнётся) от такого объёма данных.
З.Ы.
датащит на S&H могу скинуть на мыло, хотя их и в инете полным полно!
З.З.Ы. идею с аудио девайсом считаю заранее провальной, тк здесь без арма не разберёшься. есть конечно вариант настройть один контроллер на работу с usb, второй на приём и обработку данных с внешнего ADC/DAC, но это имхо редкостное извращение. тем более, насколько мне известно, стандартного драйвера под ASIO нет!
З.З.З.Ы
VenomXP вот тут прикрепил кое какие компоненты для работы с midi в Delphi и откомпиллировал тебе MIDIMON, правда хз заработает ли через wine.
- Вложения
-
- midicom3.1.zip
- (279.06 КБ) 257 скачиваний
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
А можно ссылку еще раз (в которой все написано)?
Да он похпже и с однимм кабелем захлебывается. Было у меня пара подвисов и тормоза в начале воспроизведения в FLStudio. Но погляжу еще, если там особых объемов не гонять, то работать должно, наверное. Под мои задачи много не требуется. Я же не пытаюсь сделать полноскоростной 16-ти канальный USB-MIDI преобразователь. Тут всего-лишь один инструмент + барабаны. Надо будет собрать модули барабанов и на разных скоростях покрутить. Там и будет ясно годится или нет.
А так, конечно, думается мне, что микроконтроллеры со своим USB тут будут перспективнее.
да и AVR вполне может захлебнуться (а скорее всего и захлебнётся) от такого объёма данных.
Да он похпже и с однимм кабелем захлебывается. Было у меня пара подвисов и тормоза в начале воспроизведения в FLStudio. Но погляжу еще, если там особых объемов не гонять, то работать должно, наверное. Под мои задачи много не требуется. Я же не пытаюсь сделать полноскоростной 16-ти канальный USB-MIDI преобразователь. Тут всего-лишь один инструмент + барабаны. Надо будет собрать модули барабанов и на разных скоростях покрутить. Там и будет ясно годится или нет.
А так, конечно, думается мне, что микроконтроллеры со своим USB тут будут перспективнее.
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Ха, может подобную идею тоже реализовать в MIDI-USB?
http://www.pickit2.ru/doku.php/проекты:пианино
http://www.pickit2.ru/doku.php/проекты:пианино
- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
http://www.muzoborudovanie.ru/articles/midi/midi2.php
десриптор всёже выложи общественности, пусть народ поиграется
GPL как никак)
я думаю лучше использовать lpc2148 или at91sam7s64 на них хоть проект можно нормальный скрутить.
UA3MQJ, слушай, а могёшь сделать прошивочку к ATiny какой нибудь, чтоб она то что по усб принимает в юарт отправляла и наоборот. типа 2хUSB-UART bridge? нет сейчас к соалению времяни с gcc разбираться.
десриптор всёже выложи общественности, пусть народ поиграется
я думаю лучше использовать lpc2148 или at91sam7s64 на них хоть проект можно нормальный скрутить.
UA3MQJ, слушай, а могёшь сделать прошивочку к ATiny какой нибудь, чтоб она то что по усб принимает в юарт отправляла и наоборот. типа 2хUSB-UART bridge? нет сейчас к соалению времяни с gcc разбираться.
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
на счет ARM'ов, есть у меня тут at91sam7s128, вот думаю на нем сразу все и замудрить и вход для звука и MIDI FootSwitch, сейчас главное тесты для AVR провести на работоспособность.
а для чего можно применить 2-хкабельность? практически, набросайте пример если несложно.
а для чего можно применить 2-хкабельность? практически, набросайте пример если несложно.
Даташит - библия моя...


- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
ок, предположим, что у тебя есть устройство, которое общается с хост программой (в которой загружаются пресеты и прочие настройки делаются) и одновременно принимает данные из секвенсора.
дело в том, что секвенсор занимает миди порт, и хост программа уже не может с ним работать. для этого нам и нужен второй миди порт
насчёт sam7 вперёд! что мешает?)
дело в том, что секвенсор занимает миди порт, и хост программа уже не может с ним работать. для этого нам и нужен второй миди порт
насчёт sam7 вперёд! что мешает?)
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
EternalEngine писал(а):UA3MQJ, слушай, а могёшь сделать прошивочку к ATiny какой нибудь, чтоб она то что по усб принимает в юарт отправляла и наоборот. типа 2хUSB-UART bridge? нет сейчас к соалению времяни с gcc разбираться.
У тебя это дело срочное или нет? Просто хоть у меня и есть ATtiny2313 но она сейчас в генераторе передатчика в качестве DDS стоит. Ее от туда надо будет вынимать. Программатор у меня тоже самодельный, и для этого проекта надо будет еще и макетку переделывать.
Я точно не помню. Делал на тини CDC но там вообще он под завязку весь. Памяти не остается вообще ни на что.
Когда MIDI устройство - там было 90 % с чем-то. Мне тогда хватило только считать данные с порта и сформировать ноту для хоста. Не уверен, что все поместится.
Может у тебя есть железка, я бы прошивку сделал, а ты уж там попробовал?
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
USB-MIDI Descriptor (Cabele0, Cable1)
Дескриптор с двумя кабелями.
Мой текст еще не готов. Я уже пару дней ложусь в 3 ночи, так что может в ближайшее время не доделаю.
Код: Выделить всё
// This descriptor is based on http://www.usb.org/developers/devclass_docs/midi10.pdf
//
// Appendix B. Example: Simple MIDI Adapter (Informative)
// B.1 Device Descriptor
//
static PROGMEM char deviceDescrMIDI[] = { /* USB device descriptor */
18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */
USBDESCR_DEVICE, /* descriptor type */
0x10, 0x01, /* USB version supported */
0, /* device class: defined at interface level */
0, /* subclass */
0, /* protocol */
8, /* max packet size */
USB_CFG_VENDOR_ID, /* 2 bytes */
USB_CFG_DEVICE_ID, /* 2 bytes */
USB_CFG_DEVICE_VERSION, /* 2 bytes */
1, /* manufacturer string index */
2, /* product string index */
0, /* serial number string index */
1, /* number of configurations */
};
// B.2 Configuration Descriptor
static PROGMEM char configDescrMIDI[] = { /* USB configuration descriptor */
9, /* sizeof(usbDescrConfig): length of descriptor in bytes */
USBDESCR_CONFIG, /* descriptor type */
101 + 32 /* cable 1 */, 0, /* total length of data returned (including inlined descriptors) */
2, /* number of interfaces in this configuration */
1, /* index of this configuration */
0, /* configuration name string index */
#if USB_CFG_IS_SELF_POWERED
USBATTR_SELFPOWER, /* attributes */
#else
USBATTR_BUSPOWER, /* attributes */
#endif
USB_CFG_MAX_BUS_POWER / 2, /* max USB current in 2mA units */
// B.3 AudioControl Interface Descriptors
// The AudioControl interface describes the device structure (audio function topology)
// and is used to manipulate the Audio Controls. This device has no audio function
// incorporated. However, the AudioControl interface is mandatory and therefore both
// the standard AC interface descriptor and the classspecific AC interface descriptor
// must be present. The class-specific AC interface descriptor only contains the header
// descriptor.
// B.3.1 Standard AC Interface Descriptor
// The AudioControl interface has no dedicated endpoints associated with it. It uses the
// default pipe (endpoint 0) for all communication purposes. Class-specific AudioControl
// Requests are sent using the default pipe. There is no Status Interrupt endpoint provided.
/* AC interface descriptor follows inline: */
9, /* sizeof(usbDescrInterface): length of descriptor in bytes */
USBDESCR_INTERFACE, /* descriptor type */
0, /* index of this interface */
0, /* alternate setting for this interface */
0, /* endpoints excl 0: number of endpoint descriptors to follow */
1, /* */
1, /* */
0, /* */
0, /* string index for interface */
// B.3.2 Class-specific AC Interface Descriptor
// The Class-specific AC interface descriptor is always headed by a Header descriptor
// that contains general information about the AudioControl interface. It contains all
// the pointers needed to describe the Audio Interface Collection, associated with the
// described audio function. Only the Header descriptor is present in this device
// because it does not contain any audio functionality as such.
/* AC Class-Specific descriptor */
9, /* sizeof(usbDescrCDC_HeaderFn): length of descriptor in bytes */
36, /* descriptor type */
1, /* header functional descriptor */
0x0, 0x01, /* bcdADC */
9, 0, /* wTotalLength */
1, /* */
1, /* */
// B.4 MIDIStreaming Interface Descriptors
// B.4.1 Standard MS Interface Descriptor
/* interface descriptor follows inline: */
9, /* length of descriptor in bytes */
USBDESCR_INTERFACE, /* descriptor type */
1, /* index of this interface */
0, /* alternate setting for this interface */
2, /* endpoints excl 0: number of endpoint descriptors to follow */
1, /* AUDIO */
3, /* MS */
0, /* unused */
0, /* string index for interface */
// B.4.2 Class-specific MS Interface Descriptor
/* MS Class-Specific descriptor */
7, /* length of descriptor in bytes */
36, /* descriptor type */
1, /* header functional descriptor */
0x0, 0x01, /* bcdADC */
65 + 32, 0, /* wTotalLength */
//CABLE 0!
// B.4.3 MIDI IN Jack Descriptor
6, /* bLength */
36, /* descriptor type */
2, /* MIDI_IN_JACK desc subtype */
1, /* EMBEDDED bJackType */
1, /* bJackID */
0, /* iJack */
6, /* bLength */
36, /* descriptor type */
2, /* MIDI_IN_JACK desc subtype */
2, /* EXTERNAL bJackType */
2, /* bJackID */
0, /* iJack */
//B.4.4 MIDI OUT Jack Descriptor
9, /* length of descriptor in bytes */
36, /* descriptor type */
3, /* MIDI_OUT_JACK descriptor */
1, /* EMBEDDED bJackType */
3, /* bJackID */
1, /* No of input pins */
2, /* BaSourceID */
1, /* BaSourcePin */
0, /* iJack */
9, /* bLength of descriptor in bytes */
36, /* bDescriptorType */
3, /* MIDI_OUT_JACK bDescriptorSubtype */
2, /* EXTERNAL bJackType */
4, /* bJackID */
1, /* bNrInputPins */
1, /* baSourceID (0) */
1, /* baSourcePin (0) */
0, /* iJack */
//CABLE 1!
// B.4.3 MIDI IN Jack Descriptor
6, /* bLength */
36, /* descriptor type */
2, /* MIDI_IN_JACK desc subtype */
1, /* EMBEDDED bJackType */
5, /* bJackID */
0, /* iJack */
6, /* bLength */
36, /* descriptor type */
2, /* MIDI_IN_JACK desc subtype */
2, /* EXTERNAL bJackType */
6, /* bJackID */
0, /* iJack */
//B.4.4 MIDI OUT Jack Descriptor
9, /* length of descriptor in bytes */
36, /* descriptor type */
3, /* MIDI_OUT_JACK descriptor */
1, /* EMBEDDED bJackType */
7, /* bJackID */
1, /* No of input pins */
6, /* BaSourceID */
1, /* BaSourcePin */
0, /* iJack */
9, /* bLength of descriptor in bytes */
36, /* bDescriptorType */
3, /* MIDI_OUT_JACK bDescriptorSubtype */
2, /* EXTERNAL bJackType */
8, /* bJackID */
1, /* bNrInputPins */
5, /* baSourceID (0) */
1, /* baSourcePin (0) */
0, /* iJack */
// B.5 Bulk OUT Endpoint Descriptors
//B.5.1 Standard Bulk OUT Endpoint Descriptor
9, /* bLenght */
USBDESCR_ENDPOINT, /* bDescriptorType = endpoint */
2, //0x1, /* bEndpointAddress OUT endpoint number 1 */
3, /* bmAttributes: 2:Bulk, 3:Interrupt endpoint */
8, 0, /* wMaxPacketSize */
10, /* bIntervall in ms */
0, /* bRefresh */
0, /* bSyncAddress */
// B.5.2 Class-specific MS Bulk OUT Endpoint Descriptor
6, /* bLength of descriptor in bytes */
37, /* bDescriptorType */
1, /* bDescriptorSubtype */
2, /* bNumEmbMIDIJack */
1, /* baAssocJackID (0) */
5, /* baAssocJackID (1) */
//B.6 Bulk IN Endpoint Descriptors
//B.6.1 Standard Bulk IN Endpoint Descriptor
9, /* bLenght */
USBDESCR_ENDPOINT, /* bDescriptorType = endpoint */
0x82,//0x81, /* bEndpointAddress IN endpoint number 1 */
3, /* bmAttributes: 2: Bulk, 3: Interrupt endpoint */
8, 0, /* wMaxPacketSize */
10, /* bIntervall in ms */
0, /* bRefresh */
0, /* bSyncAddress */
// B.6.2 Class-specific MS Bulk IN Endpoint Descriptor
6, /* bLength of descriptor in bytes */
37, /* bDescriptorType */
1, /* bDescriptorSubtype */
2, /* bNumEmbMIDIJack (0) */
3, /* baAssocJackID (0) */
7, /* baAssocJackID (1) */
//101 + 32 (eshe odin kabel)
};Мой текст еще не готов. Я уже пару дней ложусь в 3 ночи, так что может в ближайшее время не доделаю.
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
EternalEngine писал(а):UA3MQJ, слушай, а могёшь сделать прошивочку к ATiny какой нибудь, чтоб она то что по усб принимает в юарт отправляла и наоборот. типа 2хUSB-UART bridge? нет сейчас к соалению времяни с gcc разбираться.
Ничего не получается. Только передача принятого слова от хоста в USART. Причем передаю три байта (первый из четырех не передаю). Проверить на железе не могу, протеусом тоже не могу - он знает только AT90S2313 а не ATTiny2313, а у них вроде как USART'ы разные.
В общем получается Program: 1980 bytes (96.7% Full)
У меня очень сильные сомнения, что удастся сделать еще передачу хосту.
Ну прием из последовательного порта еще ладно, но ведь как-то надо из трех байт сделать четыре!
- Вложения
-
- USB-MIDI.hex.rar
- прошивка
- (2.4 КБ) 374 скачивания
-
- My-USB-MIDI-DIN.v1.rar
- USB-MIDI -> DIN OUT
- (111.09 КБ) 468 скачиваний
- EternalEngine
- Грызет канифоль
- Сообщения: 266
- Зарегистрирован: Пн фев 02, 2009 08:19:53
- Откуда: Москва
- Контактная информация:
Re: MIDI контроллер
спасибо, впринципе сейчас не к спеху. да и на счёт тиньки тоже не критично.
- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Ну если не принципиально, то по своему скудному опыту советую мегу8. Сейчас пока у меня заполнено 30% памяти.
Кстати, скачал тут свежий протеус! А там оказывается и ATTiny2313 есть (в моем не было), а еще есть вообще виртуальный USB хаб, и можно отлаживать USB устройства на базе контроллеров со встроенным USB.
Увы - под V-USB не работает (не может в реальном времени столько всего посчитать).
Кстати, скачал тут свежий протеус! А там оказывается и ATTiny2313 есть (в моем не было), а еще есть вообще виртуальный USB хаб, и можно отлаживать USB устройства на базе контроллеров со встроенным USB.
Увы - под V-USB не работает (не может в реальном времени столько всего посчитать).
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
итак отписываю последние вести. все запустил пока на mega8.
1. последняя либа V-USB косячная. камень заводился с ней через раз. не знаю что они там намудрили но такая хрень мне не понравилась. с версией постарше все с полтычка запустил.
2. еще трабл с резисторами переменными. странно но когда его нет девайс стартует отлично и естессно шлет непомерное количество данных чем сам себя почти и захлебывает. а когда подключен резистор(100к или 10к) запускается через раз(даже с нормальной либой v-usb) подскажите у кого какие есть по этому поводу варианты.
3. программный трабл
если делать так, то когда крутишь переменник значение его аш 3 раза меняются от 0 до макс, тоесть такое ощущение что ручку без остановки прокручивают 3 раза.
у кого какой есть мнение на этот счет.
1. последняя либа V-USB косячная. камень заводился с ней через раз. не знаю что они там намудрили но такая хрень мне не понравилась. с версией постарше все с полтычка запустил.
2. еще трабл с резисторами переменными. странно но когда его нет девайс стартует отлично и естессно шлет непомерное количество данных чем сам себя почти и захлебывает. а когда подключен резистор(100к или 10к) запускается через раз(даже с нормальной либой v-usb) подскажите у кого какие есть по этому поводу варианты.
3. программный трабл
Код: Выделить всё
int readADC(uchar channel)
{
// single ended channel 0..5
ADMUX = channel & 0x07;
// AREF ext., adc right adjust result
ADMUX |= (0 << REFS1) | (0 << REFS0) | (0 << ADLAR);
// adc start conversion
ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC))
{
; // idle
}
return ADC;
}
main()
{
...
valve.read = readADC(0);
if(((valve.last - valve.read) > 7) || ((valve.last - valve.read) < -7))
{
valve.last = valve.read;
midiMsgOut[0] = 0x0B;
midiMsgOut[1] = 0xB0;
midiMsgOut[2] = 0;
midiMsgOut[3] = valve.read>>1;
sendEmptyFrame = 0;
usbSetInterrupt(midiMsgOut, 4);
}
...
}если делать так, то когда крутишь переменник значение его аш 3 раза меняются от 0 до макс, тоесть такое ощущение что ручку без остановки прокручивают 3 раза.
у кого какой есть мнение на этот счет.
Даташит - библия моя...


- UA3MQJ
- Грызет канифоль
- Сообщения: 275
- Зарегистрирован: Вт окт 30, 2007 13:53:01
- Откуда: Рыбинск
- Контактная информация:
Re: MIDI контроллер
Странно. У меня последняя версия библиотеки - все вродебы работает.
Может потребляемая мощность большая и кто-то кого-то отключает от шины?
Там в новой версии как раз питанием что-то было.
Может потребляемая мощность большая и кто-то кого-то отключает от шины?
Там в новой версии как раз питанием что-то было.
- VenomXP
- Грызет канифоль
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
- Контактная информация:
Re: MIDI контроллер
а хз полнейшее. в usbconfig.h ничего особо не менял, только название устройства и его длину. странно без резюка работает, а с ним через раз, причем еще этот косяк с 3м оборотами.
ЗЫ. камень питаю от 5в как и резюки и сам АЦП, на линиях усб стабилитроны на 3.6в. может дело в этом?
ЗЫ. камень питаю от 5в как и резюки и сам АЦП, на линиях усб стабилитроны на 3.6в. может дело в этом?
Даташит - библия моя...

