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

Добавлено: Сб окт 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
а с котами поделиться?

Добавлено: Вс ноя 29, 2009 23:03:04
ELcat
Чем именно поделиться? Проект делался по работе поэтому не могу, секрет

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