Вячеслав70 Посмотрел я Ваш исходник... От ардуино там только компиляция. Автор исходника по максимуму прошелся по аппаратным модулям, причем зацепил и те, что обычно системой используются. Это скорее просто СИ для АВРок под ардуино IDE, причем с заявкой на максимальную оптимизацию под минимальный размер кода (и с нулевыми комментариями). Доработать такое разве что автор того проекта быстро и качественно сможет сделать. Компилируется данный исходник и под атмегу2560 - выбираем в вкладке инструменты -> ArduinoAVRboards -> arduino Mega or mega 2560 затем в строке выбора МК платформы выставляем соответственно Atmega(mega 2560)... А вот будет ли работать программка в конечном устройстве - это уже на везенье вопрос. Ну и нумерация выводов ардуино не всегда соответствует таковой для портов АВРок. Сравните: раскладка нанки
К примеру тот же ардуиновский D5 для нанки это будет PD5 - порт D а для меги уже PE3 - порт E вот это расхождение и надо учитывать при подключении выводов. Программа то работает именно с портами АВР МК, а не с нумерацией ардуино нано (или ардуино меги)!
Ну вот, именно об этом все вышеотписавшиеся и говорили. PS И помимо портов не забудьте ещё и про имена ISR.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 сентября 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
Я ж выше уже отметил - компиляция для меги 2560 без критических ошибок. Т. Е. Если бы были ошибки в абревиатурах и/или используемых ресурсах то при компиляции под иной МК они были бы явно отмечены как ошибки. Несколько "вармингов" при проверке одинаковы что для меги328, что для меги2560 - вряд ли особо на работу повлияют. А вот разница в соответствие наименования Пина/вывода ардуино линии наименованию бита/лапки/вывода порта МК на разных "платформах" может быть весьма существенно в отношении внешней схемотехники. В результате присоединяем кнопки/светики совершенно к незадействованным выводам платки. Как правило всегда помимо даташита МК необходимо смотреть и "карту раскладки выводов" конкретной платформы. Иногда и по несколько разных вариантов в одной платформе встретить можно. В то же время при работе с программой "в рамках референта" подобных казусов даже при разных МК спокойно можно избежать.
интерапт сервис рутине (корявенько) - вектора подпрограмм обслуживания прерываний. В "референсе" явно оговорено только для AVR МК. ( External Interrupts attachInterrupt() detachInterrupt() ) Для Си - смотрим внимательно даташиты и соответствующие библиотеки (avr/interrupt.h к примеру)... Кыстати... насчет формфактор "ардуино нано/ардуино про-мини"... помимо китайских LGT8Fxxx (в общем то тоже разновидность АВРок) есть еще "ардуино-нано R4"... от ренесас... по внешним выводам один в один со "стандартной" нанкой, а вот по начинке... Может кому уже живьем попадалась?
а на этом форуме трудно получить чёткий ответ на конкретно поставленный вопрос. тут все слишком "вумные" ))
ISR (Interrupt Service Routine) в Arduino — программа обработки прерываний (обработчик прерывания). Это блок кода, который выполняется при возникновении прерывания — сигнала, прерывающего нормальное течение программы.
Принцип работы Когда поступает сигнал прерывания, микроконтроллер: -Останавливает выполнение основной программы и сохраняет текущий контекст. -Переходит к вектору прерывания (адресу), где находится соответствующая функция ISR. -Выполняет функцию ISR до завершения. -Возвращает контекст основной программы и переходит к тому месту, где он оставил основную программу.
Особенности ISR: -Не принимает параметры, кроме вектора прерывания. -Не возвращает значение. -Обычно должна быть короткой и быстрой, чтобы минимизировать прерывание основного кода программы.
Ничего не принимает... Ничего не возвращает)) говорю же... надо выкинуть эту Ардуино и писать по нормальному. На чистом Си или Ассемблере.
Заголовок сообщения: Re: Почему скетч и схема для Ардуино Нано не работает на Мег
Добавлено: Ср июл 30, 2025 16:58:41
Встал на лапы
Зарегистрирован: Пн мар 08, 2021 10:55:43 Сообщений: 128
Рейтинг сообщения:0
Короче господа,вот текст программы для Нано и схема. Это 48 клавишный музыкальный синтезатор.Здесь два генератора с меандром на выходах. Так же в каждом генераторе вход для модуляции(LFO1,LFO2) На втором генераторе регулятор Detune(расстройка) в пределах одной октавы.И сигнал Строб(Gate). Клавиатура- контактно-диодная матрица 8х8 и дешифратор К155ИД3.Все работает без нареканий,но дело в том,что здесь первый генератор сидит на 8 битном таймере,потому большая погрешность частоты нот(1,5-2%). А второй на 16 битном,здесь все нормально.Вот поэтому я решил доработать программу для Ардуино Мега 2560.К тому же в нем вроде четыре 16 битных таймера. Ну и добавить еще в каждом генераторе по выходу с пилой,и может быть с треугольником.
Для такого случая вам придется детально изучать даташит на атмегу2560. Или отдать предпочтение иным схемотехническим решениям по синтезу звука, а только управление отдать МК. Вариантов там весьма много. Пы.Сы... на колодке разьема нужно указать не столько аббревиатуру ардуино (Dn -Dm), сколько соответствующие им выводы портов АВРки (меги328Р) - тогда соответствующий перенос на ардуино мегу2560 легче сделать будет.
есть еще "ардуино-нано R4"... от ренесас... Может кому уже живьем попадалась?
Интересная платка. Основной её недостаток (для меня) - поддержка только через Arduino IDE. У Renesas есть целая линейка своих плат разработки с возможностью отладки через SWD интерфейс и поддержкой через их очень удобную и бесплатную среду e2 Studio. Есть ещё (правда, недешёвая) плата RA4M1 CLICKER от Mikroe с разъёмом форм-фактора mikroBUS с подобным функционалом также поддерживаемая e2. А для любителей Arduino на основе этого МК есть плата Waveshare R7FA4 Plus A почти за ту же цену и совсем дешёвая Seeed Studio XIAO RA4M1.
Тогда пока можно спокойно с науками на АВРаах работать. Шанс нарваться на другой МК пока что достаточно низкий. С другой стороны... Много чего интересного появляется кто помоложе вполне может и освоит.
Это вариант использования готовой платки с 328й мегой плюс компилятора Си без маке файла (что вполне выполнимо в ардуино IDE при хорошем знании документации МК, GCC и "внутреннего устройства" самой IDE). Однако и вопросы помощи в модернизации исходники придется знатокам Си для АВРок адресовать (а они ардуино на нюх не переносят )
Вот автор вопроса для того и хочет мегу2560 использовать. С учётом чуток большего количества аппаратных модулей в её составе. Мало того это ж вариант музыкального инструмента - тут надо и в музыкальной грамоте/терминологии разбираться... А я в музыкальной грамоте ни в зуб (но слушать люблю).
Если это так, то лучше ... написать новую программу . Например, с 32-битным таймером. Но ... с другим микроконтроллером.
Кому писать то,мне,я в ардуино ноль.Пришел сюда,чтоб помогли.Ну для начала хотя бы изменить раскладку пинов Нано, в программе под 2560. Дальше видно будет.
Все работает без нареканий,но дело в том,что здесь первый генератор сидит на 8 битном таймере,потому большая погрешность частоты нот(1,5-2%). А второй на 16 битном,здесь все нормально
Можно использовать таймер2 совместно с таймер 0 - получится 16-ти битный таймер, аналогичный таймеру 1.
Похоже придется таки или заново программу делать или разраба беспокоить. 1. у ардуино-мега2560 не выведены на контактную гребенку выводы PD4 -PD6 (у микросхемы они имеются, но изготовители ардуино мега их не задействовали). в исходнике (судя по схемке) использованы PD4 b PD6... 2. у меги2560 выходы OC0B и OC1A заведены на другие порты, отличные от PD6 и PB1 для 328й. Возможны и иные "тонкости" по использованию/управлению АЦП (помимо того, что АЦП у меги2560 висит на PF, а у меги 328 на PC). Плюс от референса ардуино в исходнике вообще ничего - обычный Си, только в ардуино IDE скомпилирован да еще и без единого комментария. Тут таки или полная переделка по даташиту и полному описанию функционала исходника (стандартно для обычной разработки на СИ согласно построения исходника) внимательно вычитывая разделы по таймерам, АЦП и их управлению для каждого из МК и сверяя их функциональное и аппаратное соответствие, или автору надо было использовать правила референса ардуино - тогда перенос мог быть легко выполним. К сожалению - такова доля гибридных проектов с жестким использованием аппаратной привязки к конкретному МК.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения