[an error occurred while processing this directive]
|
Всё время идет выдача данных с частотой 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: info@telesys.ru