打印

max1241读不出数据,用过的朋友指点一下,谢谢

[复制链接]
1669|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cpu51|  楼主 | 2012-6-25 13:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用MAX1241做采集,CPU是ATMEGA16A,AD数据一直读不到数据,为0,什么问题啊?
//**************************************************************
//数据采集
//max1241
//**************************************************************
void sampling_analog(void)  //数据采集
{
unsigned char i;
//unsigned int ray;
//ray=(unsigned int)(read_adc(0)/1023.0*999);
// ray1=ray;
//ray2=read_adc(0);
  ray=0;
  ad_shdown_h;
  delay(10);
  ad_sck_l;  
  PORTA&=~BIT(0);          //dout LOw
  ad_cs_l;  

     while(1==(PINA&0x01))         //等待转换完成
            {;}

     for(i=0;i<12;i++)   
       {  
         ad_sck_h;        
                 delay(1);
         ad_sck_l;                                   

             if(1==(PINA&0x01))
               {
                ray=ray<<1;
                    ray+1;
                }   
         else
                {            
                ray=ray<<1;
               }                     
    }            
          ad_sck_h;         
      ad_sck_l;

        ray1=ray2=ray;  
        ad_cs_h;
        ad_shdown_l;
  }
回复 编辑

相关帖子

沙发
wjzx111056| | 2012-7-1 21:31 | 只看该作者
首先,你得确定你的硬件电路是连接正确了的,硬件电路可参考芯片的典型应用电路。
其次,对其转换的过程应该比较熟悉,该芯片的ADC转化过程如下:
  在开始加电20ms内不要有任何转换工作。将CS置低电平后,开始转化。在CS的下降沿,采样保持电路进入保持状态,而且转化正式开始,经过一段内部转化时间后,转化结束的标志是Dout信号置高。数据然后能在外部时钟的作用下依次送出。
  编程操作过程:
  ● 使用CPU上的一个通用I/O接口去拉低CS,保持SCLK低电平。
    ● 等待最大转换时间或查询DOUT是否为高电平来决定转换是否结束。
  ● 转换结束后,在SCLK的下降沿开始DOUT数据输出。
  ● 在第13个脉冲将CS置高,如果CS继续保持低电平,以下输出数据为0。
  ● 在开始一次新的转换之前,等待最小规定时间tcs,这期间CS应为高电平。如果在转换过程中通过拉高CS来放弃转换,在开始一段新的转换之前,也要等待一段时间(tacq)。CS必须在所有数据转换结束前一直保持低电平。
最后,检查程序是否满足其编程的时序要求。相应的汇编程序如下(你的程序写的太混乱了,思路不清晰)
                                MOV  A,#00H  ;接口使用三位通用I/O端口P1.0~P1.2。其中P1.0用 于片选信号。P1.2为数据输入,P1.1产生驱动脉冲SCLK
                        MOV  R6,#04H
                        MOV  R7,#08H
                        CLR   P1.2
                        CLR   P1.0        ;A/D片选有效,启动转换
           WAIT:        JNB    P1.2,  WAIT  ;等待A/D转换结束
        GAOWI:        SETB  P1.1
                        CLR    P1.1
                        MOV  C,  P1.2                ;输入一位数据
                                RLC    A
                        DJNZ   R6,  GAOWI        ;判高4位是否移出
                        MOV   21H,   A                  ;存高4位的转换结果
            DIWI:         SETB   P1.1
                        CLR    P1.1
                        MOV   C,   P1.2
                        RLC     A
                        DJNZ   R7,   DIWI
                        MOV    20H,   A                ;存低8位的转换结果
                        SETB   P1.1
                        CLR     P1.1
                        SETB   P1.0
                        RET

使用特权

评论回复
板凳
wjzx111056| | 2012-7-1 21:34 | 只看该作者
这是相应的资料,如果我解释的不管清晰的话,你可以再看看,有不对的地方还请你指出来。共同学习学习。

MAX1241编程时序.jpg (31.51 KB )

MAX1241编程时序.jpg

MAX1241.pdf

331.44 KB

使用特权

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

本版积分规则

个人签名:承接工业远程控制系统及设计研发,DCS控制系统,无线采集控制系统,单片机设计,工业设备维修,仪器仪表、控制系统维护、检修。

98

主题

458

帖子

0

粉丝