|
问下各位大神,这个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 } }
|
|