ST意法半导体
直播中

打马过草原

10年用户 986经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

仅用一个16位定时器就可以创建32位输入捕获吗?如何实现

Apnote“ Achieving 32-bit timer resolution with software expansion ”(AN2592)提到仅用一个 16 位定时器就可以创建 32 位输入捕获。结合来自更新事件的中断以计数定时器溢出和常规 16 位输入捕获到 32 位值。
Appnote 不处理读取捕获值和更新事件之间的竞争条件。如果捕获事件在更新事件之前或之后发生了几个周期,程序会检测到两个标志都被提升并且必须找出首先发生的事情。
我建议添加程序如何管理提到的竞争条件,因为如果没有它,建议的解决方案是无用的。
3.2节中断处理听起来不对。表示如果同时调用两个 IRQ(捕获和更新事件),则程序应始终首先服务更新事件。如果捕获发生在更新事件之前很短的时间内,这会导致错误的结果......



回帖(1)

杨秀珍

2022-12-13 11:25:33
如果 IC 在同一个 IRQ 调用期间发生更新事件,如果 IC 事件首先发生,则 IC 值将位于范围的顶端,如果更新事件首先发生,则 IC 值将位于范围的底端. 有了这些信息,您就可以解开先处理哪个的谜团。
IC > 32768 --> IC 事件是第一个
IC < 32768 --> 更新是第一个
您需要及时处理计时器,以便该方案首先发挥作用。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分