ВОВ51 , про октавные делители на время забудь. Эта проблема легко решается счетчиками. Главное - создание сетки опорных частот в 5 или в 6 октаве. Напоминаю: генератор должен выдавать эти 12 частот ОДНОВРЕМЕННО. Про мои дела: заканчиваю монтаж третьей платы (всего надо сделать 12 штук). Дела идут медленно. ибо приходится отвлекаться и на основную работу, и на поездки на склад в Чип\дип...за детальками. Отвлекают и другие проблемы...но дело потихоньку продвигается. Удручает свержадность наших поставщиков материалов: хотел прикупить себе ещё двухстороннего стеклотекстолита. но увидав ценник за лист формата А4 в 560 рублей = у меня опустилась матка!!! Буду искать дешевле. хотя и на рынке (хаотичном) цены тоже пугают....Не, я понимаю, конечно...каждый жрать хочет черную икру. намазанную платиной, Но не понимают другого: легче продать 100 экземпляров по 100 рублей. нежели один за 10 000 Вот Вам и звериный оскал дикого капитализма, где мечтают за запах говна получить бриллиант размером с кулак!
С вариантом кноп получается... НО ФФЕЕЕее... - т.е. только "одна из" в каждый отдельно взятый момент времени... Хоша... тоже "для игрушки" может пойти...
а если, для начала, формировать не 12, а 6 частот на аппаратных регистрах МК - "счетчики", "тактировать" их 8МГц (условно), переполнение/обнуление "счетчика" - инвертируем соответствующий бит в регистре-буфере, с частотой 500кГц (условно) буфер выставляем на ножки, а сам МК может и на 16МГц. Что скажут специалисты?
Приношу свои извинения человеку с коварным ником, простите, я был категорически неправ надо былоб проверить, заглянув в Ваши другие посты, а я ступил - не осознав, что могу ошибаться.
У МК базовый генератор один. Ежли использовать понижение на аппаратном счетчик/таймере, то максимально возможная точность определяется размером поступающих на вход квантов. Плюс пакостит время отзыва на прерывание (нестабильность в +1 машинный цикл у АВР и подобная ситуация у других семейств) и/или ситуация с "наложением прерываний" при нескольких одновременно работающих аппаратных таймерах. При "чистых" частотах с младшими нулями (либо кратных тактирующему импульсу) особо проблем нет... Только вот нотные частоты "крапленые" - с точностью до десятых долей герца - и получить оные весьма муторно. Тем более основную шкалу в высшей октаве. Можно конечно применить табличный синтез - как наиболее скоростной из возможного... Но там также имеются ограничения по разрешающей способности (помимо размера минимальной длительности машинного цикла зависит от архитектуры МК и системы команд). Итогом получается самым дешевым набор генераторов на основе ICL8038 или NE555 (цена/качество).
Вот. А я ведь не первый раз поднимаю подобную тему и очень умные любители современных Микроконтроллеров сразу же начинали критиковать, мол не занимайся херней, на МК это решается просто. Не просто...как оказывается. Частоты неудобные...но нужные... Тем более их не 8 (обычное число портом МК) ,а 12...ни туды...ни сюды...Во всем виновата десятичная система...надо было древним принимать 12 значную систему исчисления. Но они тогда были не в курсе: сколько струн в ухе человека... Добавлю: 12 часов, 12 месяцев.... 12 делится на 2, 3,4, 6, в отличии от 10 = делиться только на 2 и 5... без остатка....Пора писать статью для Нобелевки....
С часовыми соотношениями ("стрелочный индикатор" - по точке/черточке на часовую, минутную и секундную по кольцу из 60 точек) как раз проблем нету - там исходное значение ОДНА СЕКУНДА и выстроить затем можно чего пожелаеш. Да и саму секунду получить очень просто. А воть те "киолгерцы с хвостиком" - бльша нудота...
Простите ВОВ, а можно поближе познакомится? То есть ,как Вас по имени? Если это секрет, то в ЛС, хотя...какие тут нах секреты, я же адрес не спрашиваю? меня - Анатолий. Мне просто интересно с Вами разговаривать про дела. Очень приятно общаться с адекватным человеком.
подскажите, пожалуйста, сколько надо времени 16МГц-у АВР-у для - декремент регистра, проверка на 0, если 0 - инвертировать определенный бит в регистре-"буфере"; сделать это для 6 регистров-"счетчиков". Сколько это по времени?
и "счетчики" и "буфер" - аппаратные регистры АВР-ки.
Самый быстрый вариант уже выкладывался: viewtopic.php?p=2979692#p2979692 и полный проект с открытым исходником download/file.php?id=273324 В случае с массивом счетчиков алгоритм явно в проигрыше аналогии, основанной на чтении массива из памяти. Кстати... в проекте схемка с полной моей подписью и телефоном/e-mail (стандартный шаблон схем во всех проектах - абы знали кого материть в случае чего).
На сегодняшний день изготовлено 7 плат из 12 Прошу прощения за некачественное фото (снимал смартфоном). Оба фотика на даче, да и те...один жрет батарейки как слон, а второй нерезко снимает. Схему я немного изменил, ради сокращения межплатных связей. То есть добавил сюда и счетчик и резисторы развязки с шиной данных. Платы буду ставить на материнку (плата связей) как слоты. Разьемы - PLS /PBS Пришлось опять сгонять на склад Чипа и Дип за текстолитом (быстро закончился), хлорным железом и 60 диодов. На свой проект уже затратил 2500 с копейками, но это не предел. В будущем придется и целую кучу электролитов покупать Пока не решил с номиналами...Надо вначале поэкспериментировать - подобрать по времени затухания голоса. На низких нотам - подольше, на высоких - короче. Да вот ещё: у кого в Москве есть надоевший до чертиков цифровой музсинтезатор (нужна клавиатура и корпус - родные кишки = в помойку) = не откажусь за мизерную цену. Мне просто жаль разбирать крутую Касю, что у меня лежит. Нужен аппарат в 5 октав и полноразмерными клавишами. и с динамиками.
Мне кажется, проблема малость преувеличена. Я бы не стал делать на МК сетку частот, но с кварцевого генератора получить ее приемлемого качества можно. Даже очень "музыкально-слушные" профи вряд ли отличат отклонение в 1/16 тона, а это 0,76%, а ведь поделить, скажем, 16 МГц можно намного точнее. Правда, я - не музыкант ( когда вздумаю петь - спрашивают, сколько тебе надо заплатить, чтобы заткнулся ) , поэтому не знаю, как это будет звучать в аккорде. Но сомневаюсь, что некварцованные генераторы даже кратковременную стабильность обеспечат выше чем ... С нетерпением ожидаю, когда Brigadir сбацает нам полонез Огинского на своем струменте
На самом деле проблем гораздо больше, нежле просто "в сетке частот"... На дешевом МК можно получить без проблем лишь последовательное во времени сканирование частот. Используя 16-разрядный таймер/счетчик со сменой уставки "на лету", аппаратным выходом и подсчетом периодов (полупериодов) для каждой частоты. Но это в принципе "программное управление" и точность генерируемых частот до +/-10 Герц (а точность должна бысть там указана до двух знаков после запятой). Кварц с "целым" номиналом также не очень подходит. Далее ограничения на размер ОЗУ и ПЗУ (опять же у "дешевого варианта"). Итог - для примитива играющего мелодию с простым перебором нот проблем нету, а вот когда именно инструмент с кнопами/клавишами городить... Там же еще "гвоздик" - ситуация с одновременной генерацией нескольких частот. А это смешение нескольких частот. Простая функция И/ИЛИ даст или равноценность самой низкочастотной клавише или равноценность самой высокочастотной. Оптимум для "простейших" - только одна частота в каждый момент времени" совсем не люкс... А полное соответствие - аналоговый частотнокомпенсированный смеситель синусоидальных сигналов штука и муторная и дорогая. Я не говорю, что проблема в принципе не решаема - существует множество профессиональных специализированных БИС, однако получить одинаковое качество с просторассыпухи и дешевого ряда МК в приложении именно инструмента весьма проблемно - преимущество тут будет за рассыпухой. Ну а уж с реальными струнами/иными источниками и вовсе... не конкурент (ежли тот реал-инструмент в умелых лапах). Вобщем - то всегда речь идет только о возможно большем соответствии электронной безделушки оригиналу при возможно меньших затратах на изготовление той игрушки.
На самом деле проблем гораздо больше, нежле просто "в сетке частот"... )
Борис, а если подумать? Делаем так: на первый порт МК даем импульс (метку), следующая на 2 порт (а таймер считает) , на третий порт - третью метку....так, а время идет .... Первая метка переключает триггер в единицу (пристегиваем к каждому порту МК свой D - триггер). Пришло время перекинуть триггер - на входе должна быть метка сброса триггера в ноль...(полупериод частоты). И так по очереди управляем каждым из 12 триггеров. У каждого свой полупериод, задаваемые таймером с МК. Всё одно получается громоздкая схема (13 Чипов), зато частоты точные. Если не понял, к вечеру нарисую в графиках, сейчас мне скоро отьехать придеться... Вчера к ночи досверлил остальные 5 плат, три уже отрисовал и вытравил. В воскресенье = доделаю и начну думать про плату генераторов (тоже 12 штук), но там деталек поменьше...Думаю всё поместиться на двух платах такого же размера. Вернемся к триггеру: ему нужен только фронт импульса (длина импульса не критична). Первый импульс - открывает, второй - закрывает, третий (то есть тот же первый, по кольцу) открывает и так далее. Расстояние между импульсами и есть удвоенная частота.А где взять триггер? Так мы ж всё одно применяем счетчики для деления частоты на октавы... Так что от МК нам нужны только временные метки определенной паузы между ними. (частоты).
Дык "всегда чего-то получится" - вопрос насколько та КОЗА В ЖЕЛТАЯ ПОЛОСА будет похожа на заданное ГРОЗА (из песенки про мага-недоучку). Может на выходных чего поначиркаю...
Надо просто подсчитать на калькуляторе временной интервал между двумя фронтами импульсов для каждой частоты и дать команду таймеру МК эти данные выдавать на выбранные нами порты. К примеру порт А0 - импульс каждые 13 миллисекунд,А1 - каждые 18 миллисекунд, А2 - каждые 21 миллисекунд и так далее. Я так понимаю: МК имеет встроенный генератор (или с внешней обвязкой). таймер, регистр, ППЗУ и каждый порт вкл/выкл своим КМОП ключом. По приказу от ППЗУ. Или я ошибаюсь? (надо как нибудь заняться вплотную самому изучить контроллер до тонкостей, но меня тормозит лень и плохая память - надо изучать язык программирования. запомнить все команды...это как выучить Китайский....). Мне проще реализовать в "железо".
Доброе время суток. Позвольте и мне вставить свои пять копеек. Внимательно ветку не читал... но осуждаю По моему в дебри полезли, все гораздо проще. Вот нормально темперированный строй - Спойлер Для простоты отбросим суб-контр и 5 октавы как очень редко используемые. Смотрим на ноту ДО по всем оставшимся октавам и видим что каждое следующее значение в два раза больше(меньше) предыдущего. Максимальная частота 2093Гц - это наша частота "дескритизации". Настроим прерывание на любой подходящий таймер в МК с этой удвоенной частотой. В прерывании делаем инкремент целочисленной переменной и выставляем ее на любой порт(например А). Инкрементируем до переполнения пина А6 например, при переполнении сбрасываем переменную . На пинах порта наблюдаем меандры со скважностью 2. Для каждой ноты свой МК. И все. Чтобы питч сделать, нужно все МК как то соединить между собой хоть через УСАРТ в кольцо. Ну это уже детали обвязки... Не то?
_________________ Девице - Device
Последний раз редактировалось maxlab Сб янв 21, 2017 09:24:09, всего редактировалось 1 раз.
Да то...то, вот только есть некая разница: в цене МК и цена примитивной микросхемы типа 561ЛА7 (ЛЕ5 или ДН2). то первое. А второе: МК надо программировать, а это потянет за собою и приобретение программатора, компьютер и знание языка программирования, понадобиться и калькулятор и долгие вычисления коэффициента деления частоты кварца до искомой частоты на выходе заданного порта... Что попроще И ещё доложу: на одной ЛА7 я делаю ДВА генератора Из навесных деталей всего два резистора и один конденсатор. Настройка частоты = подстроить отверткой подстроечный резистор. А на МК?. Для сравнения: гвоздь можно забить простым и дешевым молотком, а можно для этой цели приобрести пневматический гвоздезабиватель и к нему в комплект: компрессор, шланг, редуктор и иметь поблизости электрическую розетку.... Тема называется: ЭМИ на логике. На логике, а не на МК. Оставьте эту игрушку для елочной гирлянды, не мучайте свой мозг пытаясь пристроить эту модную детальку под несвойственные для неё цели. Если Вы хотите сделать Цифровой музсинтезатор, то и здесь МК не потянет, слаб в коленках. Нужен довольно мощный процессор с обвязкой и обширной памятью. Я бы повозился и с процессоторм (собирал как то 4 канальный примитивный синтезатор), но тут есть одно НО: у него всего один выход звука. (процессор управляет одним каналом ЦАП). Можно , конечно сделать и 6 каналов звука, но этот монстр выйдет дороже Роланда. (кстати подобные выпускали от фирм, например: juno 106 ). Ценою в сотню тыщ рублей. Я же пока потратил 2500 рублей на детальки.. текстолит и химию. Основа скоро будет готова - это генератор 96 частот с генератором огибающей и выходом звука на 6 независимых каналов. А потом начнем из этих 6 каналов синтезировать более сложные тембры складывая, отнимая, накладывая в разных пропорциях, прогоняя через фильтры и уродуя инфранизкими частотами. Широченная (в два экрана) таблица = испортила эту страницу. А нельзя было её сжать до стандартной ширины? Или под спойлер убрать?
Товарищ Бригадир, я все понимаю и не на чем не настаиваю. Вы паровоз в своем проекте и Вам решать по каким рельсам ехать. Но рельс мало Вы пишите
Цитата:
на одной ЛА7 я делаю ДВА генератора Из навесных деталей всего два резистора и один конденсатор. Настройка частоты = подстроить отверткой подстроечный резистор. А на МК?.
... А как на счет долговременной стабильности задающих генераторов? Ваш инструмент строй держать не будет, бикоз в частотозадающих цепях надо будет термокомпенсированные кондеры применять и прецизионное питание. А на МК кварцованная тактовая, уход частоты при сквозняке минимальный.
Цитата:
понадобиться и калькулятор и долгие вычисления коэффициента деления частоты кварца до искомой частоты на выходе заданного порта...
- Этого не нужно делать.Ключевое слово - прерывание по таймеру который настроен на частоту 4186 для ноты ДО, подстройка программная - какое либо магическое число. Мое ИМХО - использовать МК там где нужно, т.е. в цепях задающих генераторов.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения