[an error occurred while processing this directive]
Не могу изменить частоту фильтра AD7715
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено CTAC 14 июня 2005 г. 14:02

Всё время идет выдача данных с частотой 25 Гц.
Код такой:


interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
AdcData=ReadAD7715();
NewData=1;
}

void WriteAD7715(char Data)
{
char i;
for(i=0;i<8;i++)
{
if(Data&0x80) SetDin; else ClrDin;
ClrClk;
Data<<=1;
SetClk;
}
}
int ReadAD7715(void)
{
int Data;
char i;
WriteAD7715(DataReg | ReadOp | Gain128); //Read Data Registr, Next Gain 128
for(i=0;i<16;i++)
{
ClrClk;
Data<<=1;
SetClk;
if(CheckDout) Data|=1;
}
return Data-0x7FFF;
}
void InitAD7715(void)
{
ClrRes;
SetClk;
SetRes;
WriteAD7715(0xFF); WriteAD7715(0xFF); WriteAD7715(0xFF); WriteAD7715(0xFF);
WriteAD7715(SetupReg | Gain128);
WriteAD7715(SelfCal | Clock1M | Filter20Hz | Bipolar | UnBuffered);
}
В main вызывается только InitAD7715();
Хидер такой:
#define SetClk PORTD|=(1<<6)
#define ClrClk PORTD&=~(1<<6)

#define SetDin PORTB|=(1<<3)
#define ClrDin PORTB&=~(1<<3)

#define SetRes PORTD|=(1<<5)
#define ClrRes PORTD&=~(1<<5)

#define CheckDout PINB&(1<<2)

#define Gain1 0
#define Gain2 1
#define Gain32 2
#define Gain128 3

#define ReadOp 0x08

#define ComReg 0x00
#define SetupReg 0x10
#define TestReg 0x20
#define DataReg 0x30

#define Normal 0x00
#define SelfCal 0x40
#define ZeroCal 0x80
#define ScaleCal 0xC0

#define Clock1M 0x00

#define Filter20Hz 0x00
#define Filter25Hz 0x08
#define Filter100Hz 0x10
#define Filter200Hz 0x18

#define Bipolar 0x00
#define Unipolar 0x04

#define Buffered 0x02
#define UnBuffered 0x00



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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru