Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Формирование синусоиды.


Автор: Коляй 11.2.2007, 23:28
 Ребята, помогите, голова уже кругом идёт от этих формул всяких. Мне надо сформировать положительную часть синусоиды, период 10-16мс. Использован ПОРТ_В, только старшие два разряда не используются. На выходе простой ЦАП. Вобщем мне надо начать формирование с нуля и закончить на нуле. Вершина получится на 0x3F, потом опять спад до 0. Что в сети нашол, всё или начинается с нижней части синуса или все разряды используются. Я создал архив констант, сделал цикл, мне теперь надо архив правильными значениями заполнить. Значения из архива будут выводиться в порт через равные промежутки времени. Какой можно формулой воспользоваться? Лучше бы попроще, что бы самому посчитать. А то всяких косинусов-тангенсов понапишут везде, что самим потом не понять.
 Спасибо. (контроллер AT90S2313).

Автор: smalcom 12.2.2007, 00:25
легче всево будет использовать таблицу синусов забитую в контролер. берешь простой програмкой генеришь необходимое количество отсчетов - [0;pi / 2] и вбиваешь массивом в код ну а потом по таймеру выпускаешь наулицу через порт

Автор: Alexei 12.2.2007, 11:11
Посмотри это:
_http://www.platan.ru/shem/pdf/sin.pdf

Автор: Коляй 12.2.2007, 20:01
Цитата(smalcom @ 12.2.2007,  00:25)
легче всево будет использовать таблицу синусов забитую в контролер. берешь простой програмкой генеришь необходимое количество отсчетов - [0;pi / 2] и вбиваешь массивом в код ну а потом по таймеру выпускаешь наулицу через порт

 Спасибо. Именно про таблицу синусов и речь. Как её считать?
ПДФ тоже посмотрел, там тоже таблица четверти периода в ПЗУ находится, а вот как её составить чего то не нашол.

Автор: smalcom 13.2.2007, 08:58
нада простую консольную програмку написать которая выводит на экран значение синуса с какимто шагом. в чем сложность то?

Автор: bzx 13.2.2007, 16:50
Цитата(Коляй @  12.2.2007,  20:01 Найти цитируемый пост)
Именно про таблицу синусов и речь. Как её считать?

Например, можно воспользоваться Excel, написав небольшой скриптик на VB:
Код

Private Sub CommandButton1_Click()

Pi = 3.14159265358979
Amp = Cells(2, 2)
Num = Cells(3, 2)

i = 2
Do While (i <> 256)
    Worksheets("List1").Cells(3 + i, 4) = ""
    Worksheets("List1").Cells(3 + i, 5) = ""
    i = i + 1
Loop

i = 0
Do While ((Num - i) <> 0)
    Worksheets("List1").Cells(3 + i, 4) = i + 1
    Worksheets("List1").Cells(3 + i, 5) = Int(Amp * sin(Pi * i / Num) + 0.5)
    i = i + 1

Loop

End Sub


Автор: Коляй 13.2.2007, 19:16
 Всем спасибо. Сегодня у молодой сотруднице поинтересовался по синусоиде. Всё решилось, вот что значит свежая голова!
 Взял 19 отсчётов по 5 градусов от 0 до 90 гр. Посчитал синус 0, 5, 10, 15... гр. Потом полученные числа умножил на свой предел 0x3F или 64. Потом загнал полученные числа в массив и ещё разок по убыванию (задача экономить флеш не стояла). Потом выводил весь массив в порт через  паузы. Вот и всё. И не надо никакие програмки. Спасибо всем ещё раз.

Автор: Alex1984 9.5.2007, 23:06
можно формировать синусоуду через ШИМ. Но это еще обвеска МК

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)