В смысле как расчитать таблицу синуса и как задать частоту?
Зарание спасибо отвечающим.
Калькулятором, в экселе, програмку написать на любом ЯВУ - как удобнее. Потом перенести полученные значения в сишный текст программы для МК. Я считал на калькуляторе, когда надо было. Через один градус - трудов не так много. Достаточно обсчитать четверть периода - это предыдущий оратор уже объяснил.astrgan писал(а):Как с помощью шим сформировать синусоиду на мк?
В смысле как расчитать таблицу синуса
К примеру, я мог позволить себе работать с числами формата float, поэтому брал значения синуса as is, как куркулятор насчитал. Если float не допускается, то полученные значения придётся обработать - разумеется, заранее, не самим МК.astrgan писал(а):А полученные значения для таблицы придется округлять?
Загонять в нужный диапазон. Например, для восьми бит максимальное значение 255. Таким образом, значения надо сместить на 128 вверх и растянуть на 127:А полученные значения для таблицы придется округлять?
Я бы сказал, не от разрядности устройства, а от разрядности структуры данных, выбранной автором для хранения значений.mickbell писал(а):зависит от разрядности того устройства, в которое этот код будет выдан
Я применял. Если контроллер успевает - почему бы и нет? Мне надо было амплитуду регулировать, приходилось взятое из таблицы умножать на число, полученное по интерфейсу. Можно было и в целых числах... зачем?YS писал(а):float в контроллерах? Не, не слышал.
Если недостаточно чисел с фиксированной точкой, можно сэмулировать float, отведя, например, 1 байт под экспоненциальную часть числа. Правда, для работы с float (фактически, эмуляции математического сопроцессора) нужно иметь достаточную квалификацию... Или набор готовых подпрограмм.YS писал(а):Фиксированная точка, в смысле? Это можно.
Смотря что за контроллер, смотря что за задача, смотря сколько памяти. На самом деле тут много всяких соображений. Но начинающим я всегда даю простой совет - не использовать float. Дорастут - там можно будет дискутировать.Если контроллер успевает - почему бы и нет? ... Можно было и в целых числах... зачем?
Что касается выбора разрядности, то Вы правы. Если, например, используется 12-разрядный ШИМ, как в Вашем примере, то на вход этого ШИМ нужно подавать 12-разрядные числа. А я говорил про общий случай представления вещественных чисел: разрядность структуры данных определяет программист в зависимости от цели (например, от требуемой точности аппроксимации), а множитель при переводе зависит от выбранной разрядности.Леонид Иванович писал(а):Почему? Именно от разредности ЦАП. Если разрядность структуры данных выбрана другой, то это ошибка. Или нет?