SIEMENS山西省大同市 西门子代理商——西门子华北一级总代理
- 供应商
- 广东湘恒智能科技有限公司
- 认证
- 西门子总代理
- PLC
- 西门子一级代
- 驱动
- 西门子代理商
- 伺服电机
- 联系电话
- 15903418770
- 手机号
- 15915421161
- 联系人
- 张经理
- 所在地
- 惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
- 更新时间
- 2024-11-26 07:00
在单片机与嵌入式开发中,某些场景需要捕获传感器的高电平(或低电平)信号的持续时间,如红外解码信号、编码器输入信号等。
如下图,以单一的一段高电平输入信号为例,如何测量这段高电平的时间呢?
从直观上理解,就是要不断的检测这个信号,当信号从0变到1时,记录一个时间,再从1变到0时,记录另一个时间,两个时间差就是高电平的持续时间了。那具体要怎么编程呢?这就要用到定时器了。
上篇介绍了定时器的输出功能,本篇是利用定时器的输入功能,来计算脉冲时长。如下图:
定时器的cnt计数器在不停的计数
首先配置定时器的输入通道为上升沿捕获,这样当检测到从0到1的跳变时,ccr1就会先保存当前的cnt值,同时cnt会清零重新开始计数
然后将定时器的输入通道为下降沿捕获,当检测从1到0的跳变时,ccr2就会先保存当前的cnt值
在这期间,cnt的计数值可能会溢出,这不影响,记录下溢出的次数,并重新开始计数即可
zui终,t2-t1的高电平时间,就可以通过n次的溢出时间加ccr2保存的时间来计算获得了
上篇介绍了定时器输出pwm时用到的几个寄存器(cr、ccmr、cnt、psc、arr、ccr等),这里再介绍几个捕获信号时需要用到的几个寄存器:
ccmr寄存器上篇已有介绍,只是上篇仅介绍了输出模式下的功能,本篇再介绍一下它在输入模式下的功能:
这些通道可用于输入(捕获模式)或输出(比较模式)模式。通道方向通过配置相应的ccxs 位进行定义。此寄存器的所有其它位在输入模式和输出模式下的功能均不同。对于任一给定位
ocxx 用于说明通道配置为输出时该位对应的功能
icxx 则用于说明通道配置为输入时 该位对应的功能
因此,必须注意同一个位在输入阶段和输出阶段具有不同的含义。
这里仅先介绍输入模式下的功能:
位 15:12 ic2f:输入捕获2 滤波器 (input capture 2 filter)
位 11:10 ic2psc[1:0]:输入捕获2 预分频器 (input capture 2 prescaler)
位 9:8 cc2s:捕获/比较2 选择 (capture/compare 2 selection)用法参照下面的cc1s通道1
位 7:4 ic1f:输入捕获1 滤波器 (input capture 1 filter)
数字滤波器由事件计数器组成,每 n 个事件才视为一个有效边沿:
0000:无滤波器
0001~1111:其它频率的滤波器
位 3:2 ic1psc:输入捕获1 预分频器 (input capture 1 prescaler)
此位域定义 cc1 输入 (ic1) 的预分频比。只要 cc1e=0(timx_ccer寄存器),预分频器便立即复位。
00:无预分频器,捕获输入上每检测到一个边沿便执行捕获
01~11:每发生 2 (4、8)个事件便执行一次捕获
位 1:0 cc1s:捕获/比较1 选择 (capture/compare 1selection),此位域定义通道方向(输入/输出)以及所使用的输入。
00:cc1 通道配置为输出
01:cc1 通道配置为输入,ic1 映射到 ti1 上
10:cc1 通道配置为输入,ic1 映射到 ti2 上
11:cc1 通道配置为输入,ic1 映射到 trc 上。此模式仅在通过 ts 位(timx_smcr寄存器)选择内部触发输入时有效
注:仅当通道关闭时(timx_ccer 中的 cc1e = 0),才可向 cc1s 位写入数据。