打印

avr169接tlv5618双通道DA输出写一次不行,写两次就行,

[复制链接]
2790|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsb.siq|  楼主 | 2010-1-24 02:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
子程序:void dac(unsigned char channal,unsigned int Dignum)
{
DDRE=0xff;
unsigned int Dig;
unsigned int flash;
DASCLK_SET;
DACS_CLR;           //片选
if(Dignum>0x0fff)
  {Dignum=0x0fff;}
if(channal==1)
  { Dig=Dignum|0xc000; }
else
  { Dig=Dignum|0x5000; }
    for(unsigned char i=0;i<16;i++)   //дÈë16ΪBitµÄ¿ØÖÆλºÍÊý¾Ý
{
  flash=Dig&0x8000;
  if(flash==0)
   { DADIN_CLR; }
     else
   { DADIN_SET; }
     Dig=Dig<<1;
     DASCLK_CLR;
     ;
  ;
     DASCLK_SET;
     ;
     ;
}
DASCLK_SET;
daDelay(60);
DACS_SET;       //ƬѡÎÞЧ
}
主程序中如果
dac(2,0x0fff);
dac(1,0x07ff);
则输出B通道不对,
但如果
dac(2,0x0fff);
dac(2,0x0fff);
dac(1,0x07ff);
dac(1,0x07ff);
则可以输出正确的电压
不知那出错了。

相关帖子

沙发
HUANGZIPING| | 2013-10-2 19:27 | 只看该作者
你把B通道0X5000改成0x0000就行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

232

帖子

2

粉丝