智能车制作

标题: AD 信号检测 [打印本页]

作者: 卟李狗昕    时间: 2012-12-7 23:02
标题: AD 信号检测
最近联系AD 信号检测,效果不是很好,求个AD检测模块的程序参考一下,谢谢

作者: quzhanguang    时间: 2012-12-7 23:56


我一直用的代码

  1. void AD_N_Init(void)
  2. {
  3.       ATD0CTL1=0b00100000;      //8位精度,转换前不放电
  4.       ATD0CTL2=0b01000000;     // 快速清零, 无等待模式, 禁止外部触发, 中断禁止
  5.       ATD0CTL3=0b00001000;     // 右对齐无符号,转换序列长度为1, No FIFO, Freeze模式下继续转换
  6.       ATD0CTL4=0b00000001;     // 为确定值 转换4个时钟, ATDClock=[BusClock*0.5]/[PRS+1]=8MHz; PRS=0,
  7.                          /* 转换时间 = Initial Sample Time + Programmed Sample Time + Resolution Period
  8.                            =2+4+10=16ATDclock=16*1/8=2us */
  9.                           // 要求每隔约2us采集一点 (或更小) 一行采26点
  10.       ATD0CTL5=0b00110000;     //单通道采样,持续采样,选择通道0   
  11.       ATD0DIEN=0b00000000;   // 禁止数字输入
  12. }

  13.            


  14. int AD_N(int i)
  15. {                                    //(AD)转换结果获取函数,抄来的。虽然不懂,就这么用了
  16.        int IOCcnt;        
  17.         ATD0CTL2=0x40;
  18.         switch(i){
  19.           case 0:   ATD0CTL5=0x20;break;  
  20.           case 1:   ATD0CTL5=0x21;break;
  21.           case 2:   ATD0CTL5=0x22;break;
  22.           case 3:   ATD0CTL5=0x23;break;
  23.           case 4:   ATD0CTL5=0x24;break;
  24.           case 5:   ATD0CTL5=0x25;break;  
  25.           case 6:   ATD0CTL5=0x26;break;
  26.           case 7:   ATD0CTL5=0x27;break;
  27.      }
  28.    while(!ATD0STAT0_SCF);
  29.   
  30.   IOCcnt=(ATD0DR0>>6);
  31.   
  32.   return   IOCcnt;
  33. }
复制代码

作者: 卟李狗昕    时间: 2012-12-8 09:50
谢谢
作者: 叶子一哥    时间: 2012-12-8 11:52

作者: x舞z    时间: 2012-12-8 13:49
呵呵,同求
作者: dapan945    时间: 2012-12-8 21:04
实话说没看懂,有那么复杂吗




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2