Генератор лучше делать по принципу DDS . преимущества очевидны - плавное изменение частоты без необходимости перестраивать выходной фильтр. Это не намного сложнее. Правда удобствами дма придется пожертвовать и использовать прерывание для выбора очередного значения из таблицы синуса
Почему же. Пусть NCO нагенерирует семплов в буфер, а DMA этот буфер по кругу воспроизводит. А если ещё вместо просто PWM реализовать пусть даже простейший сигма-дельта модулятор первого порядка, то запросто можно выводить 16-битный сигнал практически до половины частоты несущей.
@@arduinoetc , Вот за это и не люблю 8 ног (. Вроде мелочь добавить надо, а уже проблема. (Лучше, всё -таки, tsop20 брать, цена такая же, но за ножки в подобных случаях не переживаешь. Генератор заработает на 8 ног, конечно, но практическое применение очень ограничено - управление, дисплей - уже не подключишь (. Кстати, в 8-ми ногом корпусе, наверно, ног уже не хватит, а так бы можно было по уарт частоту перестраивать, формы сигналов выбирать, и даже загружать любые таблицы сигналов в ОЗУ. Было бы круто.
@@arduinoetc мне помогала задержка в пару секунд в начале кода. нужно обновить прошивку - с момента включения есть пара секунд для этой цели. особо не мешает.
@ljuberzy программатор перезагружает плату отключением питания, так что никакие трюки не нужны, возможно только подключенное внешнее железо может помешать.
Грош цена такому решению, если аппаратно оно рассчитано на одну частоту. Проще поставить операционник: в этом случает, и синусоида будет чище, и мороки с программированием нет.
Немного извращенно, но интересно. Спасибо за видео!
Какая практическая польза?
Генератор лучше делать по принципу DDS . преимущества очевидны - плавное изменение частоты без необходимости перестраивать выходной фильтр. Это не намного сложнее. Правда удобствами дма придется пожертвовать и использовать прерывание для выбора очередного значения из таблицы синуса
Почему же. Пусть NCO нагенерирует семплов в буфер, а DMA этот буфер по кругу воспроизводит. А если ещё вместо просто PWM реализовать пусть даже простейший сигма-дельта модулятор первого порядка, то запросто можно выводить 16-битный сигнал практически до половины частоты несущей.
@@proton1064 не получится по кругу-шаг выборки непериодический, такой, что постоянно будет смещение и данные разные
Можно ещё фильтр на добавить на встроенном оу. Одновременно он и буфером будет,иначе нагрузка будет влиять на сигнал
В SOP8 выход ОУ сидит на той же ноге, через которую программируем, но вы правы, это возможно и в телеге уже дополнено.
@@arduinoetc , Вот за это и не люблю 8 ног (. Вроде мелочь добавить надо, а уже проблема. (Лучше, всё -таки, tsop20 брать, цена такая же, но за ножки в подобных случаях не переживаешь. Генератор заработает на 8 ног, конечно, но практическое применение очень ограничено - управление, дисплей - уже не подключишь (. Кстати, в 8-ми ногом корпусе, наверно, ног уже не хватит, а так бы можно было по уарт частоту перестраивать, формы сигналов выбирать, и даже загружать любые таблицы сигналов в ОЗУ. Было бы круто.
@@arduinoetc мне помогала задержка в пару секунд в начале кода. нужно обновить прошивку - с момента включения есть пара секунд для этой цели. особо не мешает.
C1 и C2 для I2C остаются, на C1 можно аппаратный RX получить, а вот TX придется уже программно делать, благо генератор процессор не занимает.
@ljuberzy программатор перезагружает плату отключением питания, так что никакие трюки не нужны, возможно только подключенное внешнее железо может помешать.
Хорошо бы было ИМХО добавить интегратор на ОУ и сделать ЦАП по типу Сигма-дельта
Вопрос от профана, от нагрузки синусоида зависит?
В телеге есть переделка с использованием встроенного ОУ для повтора генерации и уменьшения влияния нагрузки.
Грош цена такому решению, если аппаратно оно рассчитано на одну частоту. Проще поставить операционник: в этом случает, и синусоида будет чище, и мороки с программированием нет.
Странный график шима для синусоиды. У МК двуполярное питание?