历史上的今天
今天是:2025年02月25日(星期二)
2020年02月25日 | 【MSP430】捕获模式测量信号占空比
2020-02-25 来源:eefocus
代码来自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 void TimerB0(void)
{
if(TBCCTL0&CM1){ //捕获到下降沿
P6OUT |=BIT0;
TBCTL|=TBCLR;
TBCCTL0=(TBCCTL0&(~CM1))|CM0; //改为上升沿捕获:CM1置零,CM0置一
}else if(TBCCTL0&CM0){ //捕获到上升沿
P6OUT &=~(BIT0);
widthB+=TBCCR0; //记录下结束时间
TBCCTL0=(TBCCTL0&(~CM0))|CM1; //改为下降沿捕获:CM0置零,CM1置一
}
}
//―――――定时器TB计数器溢出中断:用于检测脉冲上升与下降沿――――
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B(void)
{
switch( TBIV ){
case 2: break; //CCR1不使用
case 4: break; //CCR2不使用
case 14: numB++; //溢出
break;
}
if(numB>=15){
numB=0;
secB++;
}
if(secB>=10){ //设定时间后需要改变
// calculate();
TimerBclose();
return;
//设置为传送模式
}
}
史海拾趣
|
有用过转接卡的吗?pcmcia转串口 在超级终端中输入的字符混乱 使用的是华塑的pcmcia转串口卡,XP系统自带超级端连mini2440 波特率:115200 数据位:8 奇偶校验:无 停止位:1 数据流控制:无 在设置中的\"本地回显键入的字符\",没有勾选. 可以连上mini2440,之前刷的是\"缺省Linux系统\",在超级终端中能 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 我是新手,最近调了个AD574,感觉时序都没问题,可出来的数就是不变。不知道AD这块还要注意点什么啊? … 查看全部问答> |
|
replyreload += \',\' + 1365593;这份报告是基于一个8W LED驱动电源临时做的一个基本范例,是考虑有公司商业机密的问题,略作修改: 1.不对版权负责,只供参考. 2.不对内容负责,不做解释.每家公司各不相同,难于解释不同.敬请谅解. Timson,如果您要 ...… 查看全部问答> |
|
[转贴]实施DDR 2 / mddr布局的tms320dm35x dmsoc 大家可以参考一下!很有用!! 摘要: 该tms320dm35x数字媒体系统芯片(dmsoc)装置。该方法来指定接口时序的DDR 2 / mddr接口是完全不同的,比以前的设备。 前一种方法指定计时装置在数据表规格 ...… 查看全部问答> |
|
今天看到一个例子,该例子中用了下面这些语句 (* KEEP = \"TRUE\" *),貌似是用来防止wire型被综合掉 ?? (* INIT = \"0\" *),初始化一个寄存器的值为0 ?? (* ASYNC_REG = \"TRUE\" *) ?? 请问这些语句是什么语句?有什么用 ...… 查看全部问答> |
|
我用AD采样,然后想通过串口发出,结果只能得到FF。大家帮我看看那里出现了问题,谢谢 #include \"msp430g2553.h\" #define uchar unsigned char long temp; void uart_init(void) { BCSCTL1 = CAL ...… 查看全部问答> |
|
將鍵盤上A鍵和B鍵的4個接觸點伸延出來(因為是接觸按鍵,所以每個按鍵都有2個接觸點), 我想透過一組電子零件來接駁伸延出的4個接觸點, 啟動該製成品後在顯示螢幕上出現ABABABAB...連續按鍵的效果。 當然如果使用軟件來達成簡直是易如反掌,但我 ...… 查看全部问答> |




