DAC8760输出数据最高位发送问题
再次麻烦大家帮帮忙。
在大伙的帮忙下,DAC8760终于可以输出了,但是有遇到了奇怪的问题,当我发送数据寄存器的时候,当发送的数据的最高位为1时,输出值就错了,而且是非常小。比如我用0至20mA档,当发送的数据为0~0x7fff 时,输出正确,当发送大于等于0x8000时,输出都很小,1mA左右。
麻烦大家帮帮,谢谢
写程序:
void DAC8760_write_byte(unsigned char com, unsigned int dat)
{
unsigned char i=0;
unsigned char h_8bit, l_8bit;
h_8bit=(uchar)(dat>>8)&0x00FF;//取高8位数据
l_8bit=(uchar)dat&0x00FF; //取低8位数据
DAC8760_LATCH_0;
for(i=8;i>0;i--)
{
DAC8760_SCLK_0;
if(com&0x80)
{
DAC8760_DIN_1;
}
else
{
DAC8760_DIN_0;
}
DAC8760_SCLK_1;
com<<=1;
}
DAC8760_SCLK_0;
delay_us(2);
for(i=8;i>0;i--)
{
DAC8760_SCLK_0;
if(h_8bit&0x80)
{
DAC8760_DIN_1;
}
else
{
DAC8760_DIN_0;
}
DAC8760_SCLK_1;
h_8bit<<=1;
}
for(i=8;i>0;i--)
{
DAC8760_SCLK_0;
if(l_8bit&0x80)
{
DAC8760_DIN_1;
}
else
{
DAC8760_DIN_0;
}
DAC8760_SCLK_1;
l_8bit<<=1;
}
DAC8760_SCLK_0;
DAC8760_LATCH_1;
DAC8760_DIN_1;
}
你好,
能否将你写入的数据再读出来验证一下?特别是在写入的数据 大于等于0x8000时。
另外,能否将SCLK,DIN,LATCH这几个引脚的时序上传一下? 谢谢!