机器人是怎么计时的(通用定时器 - 时基单元)

目录

一,引言

二,机器人的“大脑”

三,时基单元介绍

1,定时器框图

2,时基单元

(1)预分频器

(2)CNT计数器

(3)自动重装载寄存器

四,结尾


一,引言

        技术的迅猛发展,赋予了越来越多科技产品“智能化”的标签。如智能洗碗机,智能冰箱,智能电饭煲……这些“机器人”(我们姑且这样称呼它们)都有一个共同的功能——计时。你是否有过好奇——它们是如何精确而稳定地计量时间的呢?让我们一探究竟。

二,机器人的“大脑”

        机器人计时是在它们的“大脑”中进行的。这个“大脑”,学名叫“单片机(Single-Chip Microcomputer)”,又称“微控制器(Microcontroller Unit,MCU)”。

        想象一下,把一台电脑中的主板、CPU、内存、硬盘等各种部件全部浓缩在一枚指甲盖大小的芯片上——这就是单片机。由于普通机器人对于信息的处理并不像电脑那样,承载着巨量的数学计算,而是进行环境信号的采集与对应指令的输出,单片机也就不需要过大的容量与体积。

        而本系列的主要内容,就是介绍单片机中最强大、最复杂的外设——定时器。

        本文讲解定时器的时基单元,也就是“机器人的计时原理”。听起来似乎有些专业?不妨继续往下看,接下来的内容,我会尽我所能,让你对时基单元有一个基本的认识。

三,时基单元介绍

1,定时器框图

        如图1,是通用定时器的整体框图:

图1  定时器框图

        整体可分为四个模块:时钟模块,时基单元,输入捕获与输出比较。本文在介绍时基单元的基础上,会同时介绍一点时钟方面的知识。

2,时基单元

        我们将时基单元单独拆出,如图2:

图2 时基单元

        时钟脉冲(CK_PSC,72MHz)被预分频器接收,经过预分频器分频后,脉冲转变成CK_CNT(CK_CNT和CK_PSC的区别是频率不同,若预分频器设置为2分频,CK_CNT就是36MHz)进入CNT计数器中,时基单元开始计数——其中,计数方式有三种:向上计数、向下计数与中央对其计数,这里只介绍向上计数,顾名思义,就是从0开始,按照1、2、3的方式向数值较大的方向计数——在计数的同时,计数器中的值会与自动重装载寄存器(由我们设置)中的值相比较,若达到了我们期望比较的结果(如计数器的值大于我们设定的值),就会输出相应的指令。文字有点长,结合图2阅读也许会不那么抽象。

        以上,就是时基单元基本的情况。接下来,我们分别讨论时基单元中三个模块的原理。

(1)预分频器

        我们结合预分频器时序图来剖析原理:

图3 预分频器时序图

        可以看到,在图2中,预分频器由“PSC预分频器”与一块阴影组成,其中,“PSC预分频器”名字叫“预分频控制寄存器”,而“阴影”叫预分频缓冲器,也叫影子寄存器,这里我简称其为“缓冲器”。我们修改数值,是在预分频控制寄存器中,修改之后,预分频控制寄存器将设置的值放入缓冲器,由缓冲器控制预分频计数器的数值变化(如图3),也就是说,真正控制预分频器工作的,是缓冲器。但为什么会这样设计呢?在自动重装寄存器中,我会阐述答案。

        上文中,我们理出了预分频器本身的基本运作方式,读者可以在纸上画一下流程图熟悉一下大体框架。

        我们提到了“预分频计数器”,这就是预分频器的重点——预分频器本质也是个计数器,通过图3,我们来梳理它的原理。预分频缓冲器中的设定值,就是预分频计数器计数的最大值,这一点可以对比图3中   上下两幅图的最后一排   预分频计数器前后计数的变化理解。当预分频计数器计数值为0时,CK_INT输出一个高电平,同时,计数器向上计数一次,CK_INT的意思见图2。当计数器到达自动重装载寄存器的值时,就会从0重新计数(向上计数模式)。在每次计数到达设置值时,产生一个更新事件,更新事件就是图2中那个像闪电一样的箭头,上面写着U。而UI是产生定时中断的意思,这两个东西知道就行。

        可能会有些难以理解,但是照着图像一句话一句话地理解,能够梳理出思路。

(2)CNT计数器

        CNT计数器时序图如图4:

图4 计数器时序图

        其中,CK_INT和图3中的CK_PSC是一样的。到这里,也许我们会产生疑惑:时钟这么重要,它到底是个什么东西?结合图3和图4,可以看到,我们所设置的信号中,上升沿和时钟都是同时性的,也就是说,时钟就像是一块石头,我们通过去掉与保留石头的各个部分,把石头雕刻成我们想要的部分——时钟也是一样。

(3)自动重装载寄存器

        自动重装载寄存器时序图如图5:

图5 自动重装载寄存器

        自动重装载寄存器,是计数器的“顶点”,计数器到达了我们在自动重装载的值,就会“溢出”,如图5中,比如,我们让计数器达到4的时候进行“溢出”,也就是输出一个高电平,表示计了5次数字(从0开始计数),溢出之后,计数器就又会从0开始进行计数——是不是很像“画正字”呢?

        图5是分为上下两个图的,两个图的区别在于,上面的图没有使用缓冲器(框图中的“影子”),下面使用了缓冲器。可以看见,在没有使用缓冲器时,我们原先设置计数终点是FF,在计数到32时,将FF改成了36,计数器寄存器计数到36时,就重新从0开始计数了;而使用了缓冲器,当我们改变计数终点时,计数器会计数到F5后,才会从0开始重新计数,直到计数到我们新设置的36后,再从0开始重新计数。

        有些绕,但是慢下来,对着图画一下思维导图,就能理解这段文字。

四,结尾

        也许我们会疑惑:一开始不是讲计时吗,怎么讲到计数上了?

        是否有注意,在文中,我们提及了“时钟”的概念,定时器的标准时钟时72赫兹,我们给它一个倒数——便成了周期(单位:秒),一个高电平就对应着1/72秒?

        所以,以上便是机器人计时的方法。感谢你看到这里,让我们为自己的耐心与求知欲干杯!

欢迎交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573245.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue多语言包i18n

1.安装 如果是vue2直接安装8.2.1版本,否则会出现版本不匹配的错误 npm install vue-i18n8.2.1 --save2.文件编辑 在src目录下创建文件 en.js export const h {system: "Background management system",loginOut:"LoginOut",LayoutSet:Layout …

后端前行Vue之路(二):模版语法之插值与指令

1.概述 Vue.js的模板语法是一种将Vue实例的数据绑定到HTML文档的方法。Vue的模板语法是一种基于HTML的扩展,允许开发者将Vue实例中的数据绑定到HTML元素,以及在HTML中使用一些简单的逻辑和指令。Vue.js 基于 HTML 的模板语法允许开发者声明式地将 DOM 绑…

【pytest、playwright】多账号同时操作

目录 方案实现思路: 方案一: 方案二: 方案实现思路: 依照上图所见,就知道,一个账号是pytest-playwright默认的环境,一个是 账号登录的环境 方案一: 直接上代码: imp…

搜索与图论——Dijkstra

最短路算法 稠密图与稀疏图 n为点数,m为边数。m远小于n的平方为稀疏图,m接近n的平方为稠密图。 稀疏图用邻接表存,稠密图用邻接矩阵存 朴素版dijkstra时间复杂度为O(n^2),对于稠密图可以ac,但遇到稀疏图时会TLE。 dijkstra函数实…

软考高级:软件构件标准(COBRA 、J2EE、DNA2000)概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【数据结构和算法初阶(c语言)】二叉树系列oj题目图文详解

目录 1.单值二叉树 2.判断两颗二叉树是否相同 3.二叉树的前序遍历 接口了解 4.判断一棵树是不是另外一棵树的子树 5.判断一棵树是不是对称二叉树 6.二叉树遍历 1.单值二叉树 . - 力扣(LeetCode) 如果二叉树每个节点都具有相同的值,那么该二…

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令 此处列举了docker及docker-compose的常用命令,一方面可以做个了解,另一方面可以在需要的时候进行查阅。不一定要强行记忆,用多了就熟悉了。 1、…

Fastjson配置消息转换器(时间格式问题)

问题: 我们可以看见,日期的格式有点问题。 由于ArticleListVO类的createTime成员变量是Date类型,默认是由java的Jackson来处理,使用 ISO-8601 规范来处理日期时间格式。ISO-8601 是一种国际标准的日期时间表示法,例如&…

案例分析-IEEE 754浮点标准

案例一: 请分析IEEE 754双精度浮点数规格化数的表示范围。 案例二: 规格化浮点数的Bias为什么采用2k-1-1而不是2k-1​?非规范数的指数E1-Bias而不是0-Bias? (1) ① bias 127时 E e - 127 (00…

7.3*3卷积核生成

1.卷积核 在数字图像处理中的各种边沿检测、滤波、腐蚀膨胀等操作都离不开卷积核的生成。下面介绍如何生成各种3X3的卷积核。为后面的数字图像操作打下基础。   由于图像经过卷积操作后会减少两行两列,因此在生成卷积核的时候一般会对图像进行填充,填充…

Qt中QIcon图标设置(标题、菜单栏、工具栏、状态栏图标)

1 exe程序图标概述 在 Windows 操作系统中,程序图标一般会涉及三个地方; (1) 可执行程序(以及对应的快捷方式)的图标 (2) 程序界面标题栏图标 (3)程序在任务…

2014年认证杯SPSSPRO杯数学建模C题(第一阶段)土地储备方案的风险评估全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 C题 土地储备方案的风险评估 原题再现: 土地储备,是指市、县人民政府国土资源管理部门为实现调控土地市场、促进土地资源合理利用目标,依法取得土地,进行前期开发、储存以备供应土地的行为。土地…