• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

谁能给我通俗解释下单片机定时器输入捕获的原理?

小白爱32 2018-11-20 浏览量:3025
谁能给我通俗解释下单片机定时器输入捕获的原理?谢谢
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 举个例子,这个例子真实存在于51机上。

    有对光耦电用于检测流水线上工件通过(不检测方向),平时无遮挡时,检测引脚为低电平,有遮挡时为高电平。

    领导脑子抽抽,提出个要求,检测下工件是横放还是竖放(不讨论有什么意义)

    我们的方案是:流水线速度是恒定的,只要检测工件遮挡光耦时长,就能判断工件长度,进而推算出横放或竖放。


    程序流程如下:

    检测引脚上升沿产生中断,开启一个1mS的定时器。

    定时器中断里:

    if(检测引脚为高)

        计数器累加

    else

        关闭定时器,置检测完成标志。

    主程序检测到完成标志,取计数器值。该值就是工件通过时长(1mS为单位)


    这个应用实际上就是高级单片机里的定时器捕获功能。

    STM32单片机里,我们给定时器一个预分频值(相当于前面例子开的1mS定时器),然后再给它一个装载值。指定检测上升沿还是下降沿。最后启动捕获。

    然后有两个结果

    一是产生捕获中断,读取捕获值。该值乘以预分频时间,就是从启动到捕获的时长。

    二是产生举出中断。表示长时间没有捕获到引脚跳变。


    要注意的是预分频,频率越高,检测精度越高。但负面影响是,产生溢出的时间短。

    所以预分频值要结合实际情况选择。


    • 发布于 2018-11-20
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:8
  • 定时器时钟信号=分辨率


    一般来说  输入捕捉触发之后 单片机会存储两次触发时定时器的计数值   计数值之差即信号宽度

    • 发布于2018-11-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是信号的一个边沿启动定时器,另一个边沿关闭定时器,定时器计数值就是信号时间
    • 发布于2018-11-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 定时器的输入捕获就会采集边沿信号,上升沿或者下降沿信号(一般这些捕获方式都是可以通过寄存器进行设置的),之后每当定时器引脚上存在这些边沿信号的时候就会进入定时器中断,你可以在这个中断里写中断处理函数,例如统计信号的次数等
    • 发布于2018-11-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 通过捕获触发自动开始计数,然后再触发停止计数,读出计数值就可以了
    • 发布于2018-11-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 你就把触发捕获的外部检测引脚边缘变化当成开启定时器和关闭定时器的命令就好了
    • 发布于2018-11-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是单片机的定时器在很短的时间间隔内连续读取输入,读取到沿变或者电平变化就触发计时器溢出。
    • 发布于2018-11-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 就是在上升沿和下降沿分别开启和关闭定时器,以此来计算PWM高电平时长
    • 发布于2018-12-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般就是通过引脚的边沿来控制你的定时器开启和关闭的命令
    • 发布于2018-12-23
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

谁能给我通俗解释下单片机定时器输入捕获的原理?