请教一下:我用AVR128控制AD1674,始终没反应,请帮忙看看
unsignedchar DisTab[]={0xfc,0x60, 0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,
0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,0x00,0x02,
};
unsigned int AD574value;
//#define AD574POL2
#define AD57420V
#define AD574DataDDR DDRA
#define AD574Data PINA
#define AD574ctrl PORTD
#define AD574ctrlPIN PIND
#define AD574_A0 PD4
#define AD574_RC PD5
#define AD574_STS PD6
//CE接VCC,CS,12/8接GND
#define ADC_8AD574ctrl &= ~BIT(AD574_A0); //A0为0
#define Out_H8 AD574ctrl &= ~BIT(AD574_A0); //高八位输出
#define Out_L4 AD574ctrl |= BIT(AD574_A0);//低四位输出
#define AD574_Start AD574ctrl &= ~BIT(AD574_RC);
#define AD574_Read AD574ctrl |= BIT(AD574_RC);
void AD574Convert(void) //双极
{
unsigned char h8,l4;
ADC_8;
AD574_Start;//启动转换
while(AD574ctrlPIN & BIT(AD574_STS));//等待转换结束
AD574_Read;
Out_H8;
h8=AD574Data;
Out_L4;
l4=AD574Data;
#ifndef AD574POL2 //不是双极性
AD574value=(h8<<4)+(l4>>4);
#ifndef AD57420V
AD574value/=0.4096;
#else
AD574value/=0.2048;
#endif
#else //双极性
if(h8 & 0x80)
{
AD574value=((h8 & 0x7f)<<4)+(l4>>4);
}else AD574value=(((~h8) & 0x7f)<<4)+((~l4)>>4);
#ifndef AD57420V
AD574value/=0.4096;
#else
AD574value/=0.2048;
#endif
#endif
}
void ad574init()
{
AD574DataDDR=0x00; //AD574对应的管脚输入
//PORTB=0xff;
//DDRB=0xff;
DDRD &= ~BIT(AD574_STS);//AD574状态口输入
} 我以前搞这个也搞了很久.没有搞出来
你有视波器没有,看看时序 我用的是PROTEUS仿真,看到AD输出口电平没有变化 没有哪位兄弟可以帮忙吗? 现在我也是!能启动但就是读不出来数据!
页:
[1]