|
ШИМ Сortex-M0, реализация синусоиды |
|
|
|
Sep 28 2014, 00:20
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 14-07-14
Пользователь №: 82 243

|
Всем добрый день!
Я начинающий чел в этом деле. Хочу попробовать сделать, чтобы лампочка изменяла яркость как функция синус. Т.е мне надо сделать шим. Я разобрался как например работает шим, но теперь не могу понять, как реализовать это програмно. Т.е. пусть я делаю счетчик. Дальше что? Т.е мне надо считать тики (пример: в течении 75% от периода подавать на ножку логическую единицу.) и в течении определенного кол-ва тиков подавать на ножку 1? Но возникает вопрос: Т.е к примеру я хочу получить синусоиду. В начале я должен подать 1 в течении 3 тиков, потом в течении 20 и т.д. (цифры конечно рандомные. надо все говорить относительно периода сигнала). Потом меняю полярность (есть в hal drivers функция). Но как сделать чтобы с каждым периодом менялась скважность сигнала?
не могу понять как это реализовать программно. Буду рад любым объяснениям блок схемам и программам.
З.Ы. Может кто скинет кодик с пояснением, что как почему и зачем. А то что-то мне тяжело это дается.
|
|
|
|
|
 |
Ответов
|
Sep 28 2014, 10:20
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
да все тут понятно надо синус на шиме генерить.
задача разбивается на 2.
1. - это ШИМ. Обычно надо взять таймер (это железный модуль в проце) и запустить его в режиме ШИМ. И выдать его выход на ножку. Это работает так. Таймер - счетчик который считает с заданной частотой для него задается максимальное число счета (до максимума таймера или до заданного числа), досчитав до него таймер сбрасывает в ноль и считает заново. Это число определяет период ШИМ. Вторым задает скважность - это число регистра сравнения, от 0 до максимума таймера. И на железном уровне задается что когда таймер от 0 до этого числа он на ножку выдает 1, а за пределами этого числа 0 (или наоборот, как вам больше нравиться). Дальше вам остается задавать скважность, и выходной сигнал генериться автоматически на железном уровне.
2. - это сам синус. Тут уже много творческих реализаций имеется. Наиболее часто делают так. Берут второй таймер который генерит прерывания с заданным периодом. Каждое прерывание внутри вычисляют очередную точку синуса (х координату точки) по формуле W*t+fi, то есть на самом деле есть sum=fi в начальный момент и каждое прерывание считают sum = sum + W*dt. где dt - период таймера. А дальше по полученному значению вычисляют синус либо по таблице, либо приближенно каким то рядом аля фурье и так дальее... И вот это вычисленное значение пихаете в ваш первый ШИМ, который и выдаст его на ружу.
Как то так. Период таймера выбирает в зависимости от мощности проца, как быстро он сможет считать новые точки.
|
|
|
|
Сообщений в этой теме
shtunder ШИМ Сortex-M0 Sep 28 2014, 00:20 domowoj Цитата(shtunder @ Sep 28 2014, 07:20) Хоч... Sep 28 2014, 03:00 scifi Цитата(Golikov A. @ Sep 28 2014, 14:20) д... Sep 28 2014, 10:22  jcxz Цитата(scifi @ Sep 28 2014, 16:22) Да? А ... Sep 28 2014, 14:35   shtunder Цитата(jcxz @ Sep 28 2014, 14:35) PS: Хот... Sep 28 2014, 16:44    scifi Цитата(shtunder @ Sep 28 2014, 20:44) Про... Sep 28 2014, 17:51     Alexashka Цитата(scifi @ Sep 28 2014, 21:51) ... Oct 5 2014, 20:31 Golikov A. лампочка - индикация. Меняла яркость как функция с... Sep 28 2014, 11:28 scifi Цитата(Golikov A. @ Sep 28 2014, 15:28) л... Sep 28 2014, 12:57 Golikov A. Столько слов и все по делу.... И лампочка не такая... Sep 28 2014, 15:30 jcxz Цитата(Golikov A. @ Sep 28 2014, 21:30) в... Sep 28 2014, 17:00  AlexandrY Цитата(jcxz @ Sep 28 2014, 20:00) До того... Sep 28 2014, 18:13   jcxz Цитата(AlexandrY @ Sep 29 2014, 00:13) Во... Sep 29 2014, 13:44 muravei Цитата(Golikov A. @ Sep 28 2014, 19:30) к... Sep 28 2014, 18:22 Golikov A. ЦитатаНадеюсь Вы это и к себе тоже относите?
конеч... Sep 28 2014, 18:09 ViKo Цитата(Golikov A. @ Sep 28 2014, 21:09) П... Sep 28 2014, 18:20 AlexandrY Цитата(Golikov A. @ Sep 28 2014, 21:09) П... Sep 28 2014, 18:21 Golikov A. ЦитатаЕсть такая штука, DDS называется.
именно его... Sep 28 2014, 20:08 AlexandrY Цитата(Golikov A. @ Sep 28 2014, 23:08) В... Sep 29 2014, 16:58 Plain Вообще-то, автор просто хотел пару готовых строчек... Sep 28 2014, 21:06 Golikov A. Меня немного озадачивают ваши вопросы....
Если хо... Sep 29 2014, 18:20 AlexandrY Цитата(Golikov A. @ Sep 29 2014, 21:20) Е... Sep 29 2014, 20:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|