Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SVO 07 ноября 2004 г. 11:54
В ответ на: советую привести полный текст программы иначе понять сложно отправлено patton 07 ноября 2004 г. 00:45

Полностью выглядит так (конкретные расчёты по каждой частоте опущены):

#include //кварц 4 Мгц
#include

short b,b1; //переменные, отслеживающие изменение счётчика
char k;
double t_n, x_n, t_v, x_v, st_n, st_v; //шаг
short F_shim = 15625;
short F_v1 = 1209;short F_v2 = 1336;short F_v3 = 1477;
short F_n1 = 697;short F_n2 = 770;short F_n3 = 852;short F_n4 = 941;
double n;

void init (void);
void ypravl(void);

void init (void){
DDRB =0x0f; //порт B на выход
TCCR0=0x04; //установка коэффициента деления 256
x_n = 0.044608;
x_v = 0.094528;
}

int main (void){
init();
while (1){
b = TCNT0; //считываем текущее значение счётчика
if (b != b1) ypravl(); //если значение счётчика изменилось выполняется тело условия
b1 = b; //запоминаем значение (для сравнивания)
k++; //счётчик
if (k>n) cbi(PORTB,0); //ШИМ
else sbi(PORTB,0); //n=0 модуляция 0%, n=20 модуляция 100%
if (k==20) k=0; //число ступеней ШИМ (20)
}}

void ypravl(void){ //частота опроса 15,625 кГц
t_n = st_n + x_n;
t_v = st_v + x_v;
n = (20*sin(t_n))+(15*sin(t_v));
}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru