|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2007-6-30 14:52:20
|
显示全部楼层
已经解决问题了,原来AVR的SPI用内部上拉时,无法带动AD7705和MAX539.
我的MAX539虽然片选无效,但同样使得AD7705无法工作.
那个06年生产的AD7705可能输入阻抗高,没有这个问题,而07年的就不行了,我拔掉MAX539就好了.
谢谢大家了,我本来都要放弃了,是大家的关心鼓励了我,好了,周一可以去客户交货了.
下面的程序运行正常,和我一样的菜鸟有需要的可以参考下.
//初始化
void ADC_Init(void)
{
uchar i;
for(i=10;i>0;i--)
{spi(0xff);} //持续DIN高电平写操作,恢复AD7705接口
spi(0x20); //通道1,下一个写时钟寄存器
spi(0x07); //07写时钟寄存器设置更新速率为500hz
spi(0x10); //通道1,下一个写设置寄存器
spi(0x78); // 自校准,增益128,双极,无缓冲
delay_ms(200);
}
//读数据
void Read_ADC16BitValue(void)
{
uchar temp2=0;
uint temp1=0;
uint temp2=0;
while(DRDY==1);
WriteToReg_ADC(0x38);
while(DRDY==1);
temp1=Read_Byte_SPI();
temp2=Read_Byte_SPI();
temp1=(temp1<<8)|temp2;
}
MAIN ()
{
CS_1;
PORTB.1=0; //复位
delay_ms(400);
PORTB.1=1;
CS_0; //片选
delay_ms(400);
ADC_Init();
while (DRDY==1);
WHILE(1)
{主循环程序}
} |
|