5291|2

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

问下各位大神,这个msp430的ADC采样保持时间是多少 [复制链接]

想问下下面这串代码中,ADC的采样保持时间怎么算?转换一次的时间又是多少?怎么算?最好能告诉我是由什么控制的
//             -----------------
//         /|\|              XIN|-
//           ||                 |32kHz
//          --|RST          XOUT|-
//            |                 |
//            |                 |
//     Vin -->|P6.0/A0          |

#include<msp430x54x.h>

#define uchar unsigned char
#define uint unsigned int

uchar  T_5S;               //AD转换,5秒定时。
uchar  AD_Start;           //AD_Start=1 允许AD转换,AD
uint Results[32];          //存放ADC的转换结果
uint Average;              //AD平均值
void Init_Ta0(void);



void main(void)
{   
      WDTCTL=WDTPW+WDTHOLD;                          //设置看门狗控制寄存器,关看门狗
      Init_Ta0();                                    //TA0初始化
      T_5S=0;                                        //AD转换,5秒定时。
  //---------------------------------------------------------------------- 
      ADC12CTL0 = ADC12SHT02 + ADC12ON;         // Sampling time, ADC12 on
      ADC12CTL1 = ADC12SHP+ADC12CONSEQ0;        // Use sampling timer
      ADC12IE = 0x01;                           // Enable interrupt
      ADC12CTL0 |= ADC12ENC;                    //
      P6DIR&=~BIT0;                             //P6.0输入
      P6SEL |= 0x01;                            // P6.0口第二功能 P6.0 ADC option select
  //---------------------------------------------------------------------
     _EINT();                                   //打开总中断   
     while (1)
  {
    if(AD_Start==1){ADC12CTL0 |= ADC12SC;}         // T_5S每隔5S转换一次AD    ,Start sampling/conversion
  }
}

/*************************************************
  函数(模块)名称:voidInit_Ta0(void)
  功能:  TA0初始化
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:         void
  输出参数:         void
  函数返回值说明:
  使用的资源
  其它说明:
*************************************************/
void Init_Ta0(void)
{
      TA0CTL=TASSEL_0 + TACLR;                       //选择辅助时钟ACLK,计数器清除
      TA0CCTL0=CCIE;                                 //CCR0中断使能
      TA0CCR0=16384;                                 //设置计数器CCR0的初值, 1S
      TA0CTL|=MC_0;                                  //减计数模式
}

//------------------中断服务程序---------------------------
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A(void)           //1S中断
{
    T_5S++;
    if(T_5S>=5){ AD_Start=1;T_5S=0;}    //当定时5秒时启动AD

}

#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)

{
      static uchar index = 0;
   
    Results[index++] = ADC12MEM0;                      // Move results, IFG is cleared
    if(index == 9)               //采集10次AD
    {
         uchar i;
        
         Average = 0;
         for(i = 0; i < 10; i++)                  //10个数据
            Average += Results;                //结果累加   
         average=(average/10);                    //即除以10求平均值 (最后得到的AD值)
                                    
        
         index = 0;                              //清0
 
    }  
 
}

最新回复

楼主可以使用CCSv5 IDE中集成的Clock统计功能,参看执行的Cycle,然后在通过系统主频除以Cycle就可以算出这个时间。  详情 回复 发表于 2012-8-31 16:09
 
点赞 关注

回复
举报

147

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
ADC12CTL0 = ADC12SHT02 + ADC12ON;         // Sampling time, ADC12 on
根据这句话自己计算,看数据手册和程序
 
 

回复

312

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
楼主可以使用CCSv5 IDE中集成的Clock统计功能,参看执行的Cycle,然后在通过系统主频除以Cycle就可以算出这个时间。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表