自适应定时方法、装置与流程

文档序号:22675133发布日期:2020-10-28 12:29阅读:206来源:国知局
自适应定时方法、装置与流程

本发明涉及单片机定时控制领域,尤其涉及一种自适应定时方法、装置。



背景技术:

单片机定时器通常用于控制脉冲的输出,在现有技术中采用的定时器控制脉冲方案中,定时器只能相对于0时刻设置正的时间序列,不适用于需要设置负的时间序列,其次,定时器的时间序列都是相对于0时刻而言的,当时序较多时会占用大量的存储空间,从而降低了定时器的性能。



技术实现要素:

发明目的:本发明旨在提供一种自适应定时方法、装置,通过计数器初值与时间序列之间的设置关系,实现定时脉冲相对0时刻可正、可负,其次,通过设置时间节点和脉冲宽度,每个定时脉冲的相对时序关系可任意配置,可以降低时序的存储开销。

技术方案:本发明提供一种自适应定时方法,包括:设定脉冲的时间序列,和定时器发生中断的时间宽度;所述时间序列包括时间节点、脉冲宽度;控制计数器开始计数,在设置的计数器初值达到时间节点时,控制触发脉冲动作;所述计数器初值依据发生中断的次数而相应增长。

具体的,所述定时器工作方式为tmod=1。

具体的,所述定时器初始化和中断时设置th0=(65536-50000)/256,tl0=(65536-50000)&0xff。

具体的,所述时间序列为t0,δt0,t1,δt1,…,tn-1,δtn-1,其中t0,t1,…,tn-1为时间节点,δt0,δt1,…,δtn-1为与各个时间节点对应的脉冲宽度,时间节点占计数器12位,脉冲宽度占计数器4位。

具体的,当计数器初值等于ti-t0时,控制触发开始脉冲;当计数器初值等于ti-t0+δti时,控制触发结束脉冲;ti为第i个时间节点。

本发明还提供一种自适应定时装置,包括:设定单元和计数单元,其中:

所述设定单元,用于设定脉冲的时间序列,和定时器发生中断的时间宽度;所述时间序列包括时间节点、脉冲宽度;

所述计数单元,用于控制计数器开始计数,在设置的计数器初值达到时间节点时,控制触发脉冲动作;所述计数器初值依据发生中断的次数而相应增长。

具体的,所述定时器工作方式为tmod=1。

具体的,所述定时器初始化和中断时设置th0=(65536-50000)/256,tl0=(65536-50000)&0xff。

具体的,所述时间序列为t0,δt0,t1,δt1,…,tn-1,δtn-1,其中t0,t1,…,tn-1为时间节点,δt0,δt1,…,δtn-1为与各个时间节点对应的脉冲宽度,时间节点占计数器12位,脉冲宽度占计数器4位。

具体的,所述计数单元,用于当计数器初值等于ti-t0时,控制触发开始脉冲;当计数器初值等于ti-t0+δti时,控制触发结束脉冲;ti为第i个时间节点。

有益效果:与现有技术相比,本发明具有如下显著优点:定时脉冲相对0时刻可正、可负;降低时序的存储开销。

附图说明

图1为本发明提供的自适应定时方法的流程示意图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明。

参阅图1,其为本发明提供的自适应定时方法的流程示意图。

步骤1,设定脉冲的时间序列,和定时器发生中断的时间宽度。

本发明实施例中,所述时间序列包括时间节点、脉冲宽度。

本发明实施例中,所述时间序列为t0,δt0,t1,δt1,…,tn-1,δtn-1,其中t0,t1,…,tn-1为时间节点,δt0,δt1,…,δtn-1为与各个时间节点对应的脉冲宽度。

在具体实施中,时间节点是控制脉冲开始的时刻,脉冲宽度是控制脉冲持续发生的时间,其中脉冲宽度δt0对应的是时间节点t0开始的脉冲,δt1对应的是t1,其他同理,不同时间节点对应的脉冲宽度可以设置的不一致,也即每个定时脉冲的相对时序关系可任意配置。

在具体实施中,时间序列中时间节点的设置相对于0时刻可正、可负,通过时间序列控制的定时脉冲可以用于控制外部器件。

本发明实施例中,定时器工作方式为tmod=1。

本发明实施例中,定时器初始化和中断时设置th0=(65536-50000)/256,tl0=(65536-50000)&0xff。

在具体实施中,在单片机中(例如8031单片机),有两个计数器(th0和tl0),设置定时器的工作模式为tm0d=1,即16位定时器,最大的计数量为65535;对于一个12m的晶体振荡器,供给计数器的脉冲时间间隔为1微秒。在初始化和中断时设置th0=(65536-50000)/256,tl0=(65536-50000)&0xff,即当发生50000次振荡后,t0溢出,产生一次中断,中断每50ms发生一次(中断的时间宽度),因此50ms可以作为定时器的时间序列单位,根据实际应用场景,中断的时间宽度也可以相应的进行调整。

本发明实施例中,时间节点占计数器12位,脉冲宽度占计数器4位。

在具体实施中,时间序列占用的存储空间为(12+4)*n/8=2n字节,可控制n个矩形脉冲的产生,最大脉冲延迟为2047*50=102350ms=102.35s,最大脉冲宽度为15*50=750ms=0.75s。通过设置时间节点和脉冲宽度,以及时间节点和脉冲宽度的计数器位数分配,每个定时脉冲的相对时序关系可任意配置,可以降低时序的存储开销。

步骤2,控制计数器开始计数,在设置的计数器初值达到时间节点时,控制触发脉冲动作;所述计数器初值依据发生中断的次数而相应增长。

本发明实施例中,当计数器初值等于ti-t0时,控制触发开始脉冲;当计数器初值等于ti-t0+δti时,控制触发结束脉冲;ti为第i个时间节点。

在具体实施中,可以设置计数器初值num=0,每次触发中断时num加1,则当num等于零时,触发第一个脉冲事件,对于其余时间序列t0,t1,…,tn-1,当num等于ti-t0时触发开始脉冲事件,当num等于ti-t0+δti时触发结束脉冲事件。

在具体实施中,通过计数器初值与时间节点之间的设置关系,实现定时脉冲相对0时刻可正、可负,在通过单片机定时器实际控制外部器件时,可以据此校正时间误差。

在具体实施中,ti可以为t0,t1,…,tn-1中任意一个时间节点,若需要重新设置脉冲的产生时间和脉冲宽度,重新设置时间序列t0,δt0,t1,δt1,…,tn-1,δtn-1即可。

本发明还提供一种自适应定时装置,包括:设定单元和计数单元,其中:

所述设定单元,用于设定脉冲的时间序列,和定时器发生中断的时间宽度;所述时间序列包括时间节点、脉冲宽度;

所述计数单元,用于控制计数器开始计数,在设置的计数器初值达到时间节点时,控制触发脉冲动作;所述计数器初值依据发生中断的次数而相应增长。

本发明实施例中,所述定时器工作方式为tmod=1。

本发明实施例中,所述定时器初始化和中断时设置th0=(65536-50000)/256,tl0=(65536-50000)&0xff。

本发明实施例中,所述时间序列为t0,δt0,t1,δt1,…,tn-1,δtn-1,其中t0,t1,…,tn-1为时间节点,δt0,δt1,…,δtn-1为与各个时间节点对应的脉冲宽度,时间节点占计数器12位,脉冲宽度占计数器4位。

本发明实施例中,所述计数单元,用于当计数器初值等于ti-t0时,控制触发开始脉冲;当计数器初值等于ti-t0+δti时,控制触发结束脉冲;ti为第i个时间节点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1