[uquote="ARV",url="/forum/viewtopic.php?p=4797907#p4797907"]Мне, как тупому, не понятно, зачем менять массив синуса вообще? Я учился еще на таблицах Брадиса...[/uquote]
Потому, что частота дискретизации может быть разной.
В разных проектах или в текущем. где при отладке выясняется, что частоту дискретизации нужно менять.
Но дело не в этом, Роман.
Дело в том, что вы смешали в кучу две совершенно разных случая в рамках этой ветки форума.
Поиск максимума и минимума происходил в моем коде. фрагмент которого попал на глаза Игорьку и он решил беспонтово поумничать.
В этом фрагменте находилась центральная частота при анализе массива полученного через DMA от модуля захвата SMT. То есть массив таки volatile.
А массив синуса обсуждался в рамках синтеза сигнала. Причем при синтезе посредством PWM нужно подобрать соотношение частоты дискретизации, частоты ШИМ и частоты синтезируемого сигнала. И в этом процессе иногда приходится менять размер массива синуса.
Добавлено after 9 minutes 7 seconds:
[uquote="igorg1",url="/forum/viewtopic.php?p=4797913#p4797913"]и что? В процессе отладки выяснили - изменили[/uquote]
Это если изменили только синус и единственный раз.
А практика показывает, что изменять нужно разные массивы и в разных местах. Часто не по одному разу и на фоне остальной работы с кодом. Поэтому писать всякую дублирующую хрень нет никакого смысла. Ты вон к скобкам в одной строке прицепился, а они вообще никак и ни на что не влияют.
[uquote="igorg1",url="/forum/viewtopic.php?p=4797913#p4797913"]В процессе работы говоришь????
Ну так создам ДИНАМИЧЕСКИЙ массив - в чём проблема????
А вот в статическом массиве - я ничего менять не буду.[/uquote]
Ну так глупец никогда ничего не меняет. Поэтому у него синус и не синус вовсе.
"В процессе работы" - это обиходный набор слов.
"В процессе работы" над кодом или "в процессе работы" кода?
Кроме того, динамический массив - это способ выделения памяти, а не возможность изменить массив. Учи матчасть.
Изменить размер синуса в ОЗУ можно и в пределах выделенной памяти с расчетом на максимальный размер. Учитывая использование синуса в DMA, выделять память под динамический массив - это херовая идея ведущая в ад.
Добавлено after 8 minutes 11 seconds:
[uquote="Rapra",url="/forum/viewtopic.php?p=4797910#p4797910"]Ведь есть даже микросхемы DDS-генератора с жестко зашитой таблицей синуса.[/uquote]
Это так. Только нужно вспомнить как работает DDS. Если его работу воспроизвести на МК в программном режиме. мы более ничего на этом МК сделать не сможем. Каждый клок накачки ядра DDS потребует проделать простую математическую операцию суммы, а затем округления и вычисления указателя. Это невозможно автоматизировать вне ядра машины.
Поэтому в МК ставят голое ядро DDS, которое генерирует не синус, а события отсчетов. И делает это автоматически. Количество отсчетов при этом может быть любым - это определяется способом цифроаналогового преобразования и требованиями к антиалиасингу. Антиалиасинг - это внешний фильтр и его реализуемость для достижения требуемых параметров сигнала кидает цепочку настроек проекта в размер таблицы синуса.