Помогите из ступора выйти
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Хрюндель 27 сентября 2004 г. 16:41

Нужно определить появление сигнала с частотой 16кГц, использую встроеный компаратор AVR, чатота прерываний таймера 20кГц делать больше не желательно.

char Counter_Sin;
char Counter_Cos;
char Cycle;
int __SIN;


#pragma vector = TIMER0_COMP_vect
__interrupt void timer0_comp(void)
{
int tmp = 0;

if(ACSR_Bit5)//если ACO установлен
{
tmp = 0x1000;
}

if((__SIN ^ tmp)>0)
{
Counter_Sin++;
}
else
{
Counter_Sin--;
}

if(((__SIN + 16384)^ tmp)>0)
{
Counter_Cos++;
}
else
{
Counter_Cos--;
}
__SIN+=52429; //(16*65536/20 = 52429)
if(--Cycle == 0)TIMSK &=~(1<}


Затем в основной программе

..........

Counter_Sin = 0;
Counter_Сos = 0;
Cycle = 32;
TIMSK |=(1<while(..)
{
.......
if((TIMSK & (1<{
if((abs(Counter_Сos)>8)||(abs(Counter_Sin)>8))
{
..типа принят сигнал
}
Counter_Sin = 0;
Counter_Сos = 0;
Cycle = 32;
TIMSK |=(1<}
.......
}
все вроде правильно, но нифига не работает


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

Ответы



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

E-mail: info@telesys.ru