Страница 1 из 1

ЦАП R-2R

Добавлено: Пт окт 09, 2009 21:56:08
topor
Хочу синус. Не вдупляю как прогу на AVR написать. (8 -разрядов)
Три проекта посмотрел--везде таблицы разные...один вообще 1/4 периода в pgm записал остальное вычисляет.
Для чайника объясните пожалуйста и поподробнее :cry:

Добавлено: Сб окт 10, 2009 09:16:19
Krik99
Создаеш массив типа с значениями порта, а потом через определённое время почередно выводиш масиив в порт к которому подключена ЦАП.

Добавлено: Сб окт 10, 2009 09:50:46
BCluster
Да можно и не создавать таблицу если время есть.

Код: Выделить всё

int pi = 3.14;
while(1)
for (i=0;i<360;i++)
{
PORTA=(int)((1+sin(i*pi/180))*128); //синус будет в области [0;2]
}

Добавлено: Вс окт 11, 2009 11:06:34
topor
спасибо за ответы.
времени скорее всего не будет .120-150кгц(причем надо дуть туды сюды тоже очень быстро) ген качающ частоты.

Добавлено: Ср ноя 25, 2009 16:52:54
ELcat
О, а я подобное на ПЛИСке делал :)) Табличка калькулятором посчитанная на 1/4 периода и перебираешь взад-вперёд, старший знак ЦАП используешь как +/-, вобщем в 72 ячейковую всё поместилось с схемой синхронизации и бооольшим запасом :)

Добавлено: Ср ноя 25, 2009 17:15:53
GP1
ELcat
а с котами поделиться? :wink:

Добавлено: Вс ноя 29, 2009 23:03:04
ELcat
Чем именно поделиться? Проект делался по работе поэтому не могу, секрет :) Что касается принципа, то я вроде понятно его описал. Делишь частоту кварца до нужного значения, ею тактируешь "адресный" счётчик, с него адрес идёт на "таблицу" с 1/4-тью периода синусоиды. Кроме того есть счётчик четвертей, который управляет направлением счёта "адресного" счётчика и старшим битом ЦАПа. Маленькая "хитрость", этим же старшим битом инвертируются данные с выхода таблицы.