代码来自2016北斗杯,用于测量空气pm2.5,该传感器通过测量信号的占空比估计颗粒浓度
(1)TimerB设置,工作在捕获模式:
void TimerB_Init(){
TBCCTL0&=~(CCIS1+CCIS0); // 捕获源为P4.0,即CCI0A(也是CCI0B)
TBCCTL0|=CM_2+SCS+CAP; //下降沿捕获,同步捕获,工作在捕获模式
TBCCTL0|=CCIE; //允许捕获比较模块提出中断请求
TBCTL|=ID_3;
TBCTL|=TBSSEL_2; //选择时钟MCLK
TBCTL|=TBCLR; //定时器清零,
//定时器开始计数(连续计数模式0~0xFFFF)
TBCTL|=MC_2;
_EINT();
}
(2)定时器开关:
void TimerBopen(void){
TBCCTL0|=CCIE; //允许捕获比较模块提出中断请求
TBCTL |= TBIE;
}
void TimerBclose(void){
TBCTL &= ~TBIE;
TBCCTL0&=~CCIE; //禁止捕获比较模块提出中断请求
}
(3)中断
用到两种中断:下降沿/上升沿中断、计数器溢出中断
实现在单位时间内测量低电平的时间,从而计算占空比:
//―――――定时器TB CCR0的中断:用于检测脉冲上升与下降沿――――
#pragma vector=TIMERB0_VECTOR
__interrupt v