04-17-2017, 08:51 AM
(Сообщение последний раз редактировалось: 04-17-2017, 08:54 AM Altor Audio.)
IgorE Написал:Плюс в программе не забывать постоянно о ШИМе.
Таймер настроил, и все, больше в программе делать ничего не надо. В AVRах таймеры с шимом тоже есть :)
Когда надо будет изменить напряжение с "ЦАПа" - изменить один регистр.
IgorE Написал:А тут еще АЦП сигнал снимает.
Ну и отлично - один канал АЦП завести на выход ШИМа (после фильтра), сделать примитивную ОС, после чего разброс параметров фильтра будет пофиг (в разумных пределах конечно, но уж все толерансы, включая от температуры, точно скомпенсирует).
Но лично я бы конечно поставил нормальный ЦАП, потому как делать все это, плюс еще паять фильтр - лень :)
Работу АЦП вообще на таймерное прерывание посадить, чтобы даже не думать о нем - пусть там складывает результаты в память.
(У некторых АТМега это можно сделать так, чтобы происходило без участия процессора, по DMA).
А в самой программе, когда надо - просто читать из памяти.
Тут работы на 2 часа максимум, чтобы получить "рыбу".
(В данном случае "рыба" - это заготовка программы, с работающей периферией и всей инициализацией, далее уже писать основной алгоритм и его детализацию).
P.S. На STM32 эта "рыба" делается за 5 минут, даже без особых знаний о проце, в программме STM32CubeMX, просто ставя "галочки" :) После чего она сгенерирует готовый Си-код для Keil-а или горбатого IAR-а.
Для серьезных проектов оно по разным причинам не очень годится (за что и получило прозвище "калокуб", т.к. работает с библиотекой HAL, ну и сам Cubе) но для простых любительских, или чтобы "быстро попробовать", особенно на не знакомом (новом) процессоре - вполне.