Работа в Algorithm Builder for AVR
|
|
peratron | Дата: Вторник, 04.02.2014, 12:40 | Сообщение # 1 |
Генерал-полковник
Группа: Администраторы
Сообщений: 1102
Статус: Offline
| АлгоритмБилдер - ассемблер для AVR с простым, но эффективным графическим интерфейсом.
http://www.getchip.net/posts....builder http://vrtp.ru/index.php?showtopic=2211
PERATRONIKA - персональная звукотехника
|
|
| |
Jinx | Дата: Вторник, 04.02.2014, 13:45 | Сообщение # 2 |
Полковник
Группа: Друзья
Сообщений: 213
Статус: Offline
| Это для любителей ассемблера или для тех, кто не знает C? Или знает, но считает себя умнее разработчиков GCC.
Если серьёзно, то я бы сначала внимательно сравнил производительность кода, т.к. с GCC я работал плотно и долго, и с его возможностями знаком. Надо будет изыскать тест.
Сообщение отредактировал Jinx - Вторник, 04.02.2014, 13:53 |
|
| |
peratron | Дата: Вторник, 04.02.2014, 16:06 | Сообщение # 3 |
Генерал-полковник
Группа: Администраторы
Сообщений: 1102
Статус: Offline
| Это для тех, кто хочет из МК иметь то быстродействие, которое заложено в них разработчиками.
Про Си забудь напрочь - это для ленивых пионеров, коими большинство программеров и является по большому счёту.
Во всяком случае с атмелом на Си ты ничего не сотворишь в звуке - ЯВУ только лампочками мигать могут...
Насчёт сравнения - то оно всё давно уже сделано: разница на порядки - прежде всего по скорости, но и по объему кода тоже.
Причина в неоптимальном быстродействии конструкций ЯВУ - и в невозможности создания элегантных алгоритмов. Компиллятор - зараза предельно тупая и бестолковая. По крайней мере таково положение дел в нижнем домене - 8-битных МК с малым количеством аппаратных средств. Си можно в звуке применять начиная с АРМов - и там это имеет смысл прежде всего по причине увеличения и усложнения аппаратных ресурсов, с которыми вручную управиться действительно сложновато.
А на атмелах - нормальный результат только при прямом управлении..
ХИНТ: прикинь алгоритм - для того же ДМ требуется крутить цикл с периодом не более 1 мкс. На АСМе это делается легко и просто - на Си просто бесполезно.
Для простейшего ДМ требуется взять бит из компаратора и передать его на порт, к которому прицеплен интегратор. Вот закрути этот цикл на сях и посмотри, каков будет период...
На асме даже при не самом быстром кварце 10 мГц я буду иметь порядка 10 команд в цикле - что достаточно для дельта-модулятора с приличным качеством...
PERATRONIKA - персональная звукотехника
|
|
| |
peratron | Дата: Вторник, 04.02.2014, 16:25 | Сообщение # 4 |
Генерал-полковник
Группа: Администраторы
Сообщений: 1102
Статус: Offline
| И, к слову - как ты вотнёшь Си в тиньку13?!
PERATRONIKA - персональная звукотехника
|
|
| |
Jinx | Дата: Вторник, 04.02.2014, 16:51 | Сообщение # 5 |
Полковник
Группа: Друзья
Сообщений: 213
Статус: Offline
| Цитата peratron ( ) Для простейшего ДМ требуется взять бит из компаратора и передать его на порт, к которому прицеплен интегратор. Вот закрути этот цикл на сях и посмотри, каков будет период...
Точно так же и на си самими атмеловцами написаны макросы, и оптимизирован компилятор под их архитектуру - выполняется вышеописанное такой же тупой побитовой инструкцией, которая компилятором транслируется в то же самое, что на асме пишешь сам. Про тупорылось компилятора я в корне несогласен - средств по оптимизации в нём просто моря и океаны - стоит только мануал прочитать.
К тому же в АВР есть механизм аппаратных прерываний, которые в сях обрабатываются абсолютно прекрасно. Как сделать это на АБ пока не нашёл.
Цитата peratron ( ) И, к слову - как ты вотнёшь Си в тиньку13?!
Си в тиньку я втыкать не буду - я в неё буду втыкать такой же hex файл с такими же машинными инструкциями. У меня уже всё налажено.
В качестве эксперимента, раз уж мы не заключены в коммерческие рамки, я предлагаю попробовать вести две версии кода - потом и сравнить быстродействие. Благо кода немного.
АБ освою обязательно - хотя бы для обмена между нами - это не вопрос.
Сообщение отредактировал Jinx - Вторник, 04.02.2014, 16:53 |
|
| |
peratron | Дата: Вторник, 04.02.2014, 17:35 | Сообщение # 6 |
Генерал-полковник
Группа: Администраторы
Сообщений: 1102
Статус: Offline
| В звуке к работе через прерывания следует относиться чрезвычайно осторожно - как и вообще к подпрограммам с переменным временем исполнения: надо тщательно следить за временами - иначе огребёшь джиттера по самое нехочу...
PERATRONIKA - персональная звукотехника
|
|
| |
Jinx | Дата: Вторник, 04.02.2014, 17:40 | Сообщение # 7 |
Полковник
Группа: Друзья
Сообщений: 213
Статус: Offline
| Согласен - в разрезе работы с потоками константной скорости, скорость их обработки тоже должна оставаться константной. Но вот во всех остальных применениях (в т.ч. PCM AD) работа с прерываниями очень даже.
|
|
| |
peratron | Дата: Вторник, 04.02.2014, 20:35 | Сообщение # 8 |
Генерал-полковник
Группа: Администраторы
Сообщений: 1102
Статус: Offline
| Вот и получается, что в реалтайме звука, кодирование в си превращается в чесание левого уха правой пяткой - крайне непрозрачно и требует жутких заморочек с синхронизацией. Писать сразу в машкодах (на ЯНУ) - это быстрей и менее трудозатратно. Не говоря про названные выше бонусы.
Плата за работу на низком уровне - придётся глубоко изучать железо. Что я считаю обязательным условием успеха всей разработки - так, что переход с высокого уровня на низкий есть существенное повышение общей компетентности...
PERATRONIKA - персональная звукотехника
|
|
| |