本发明涉及定时/计数器控制技术领域,尤其涉及一种异步定时/计数器之间的协同工作方法。
背景技术:
一般单片机中央处理器(MCU)均集成有独立的外设定时/计数器,所述定时/计数器是可编程的,即所述定时/计数器的工作方式、定时时间、量程、启动方式等均可由单片机指令来控制和改变。
但这种传统的定时/计数器控制方式需要大量的软件程序去配合定时/计数器进行工作,多路定时器在复杂精细的运算过程中,需要使用标志位(即软件指令)的方法实现一个定时/计数器对另一个定时/计数器的控制,这种控制方法不仅降低了算法的运行速度,还增加了软件指令的复杂性。
技术实现要素:
本发明的目的在于提供一种异步定时/计数器之间的协同工作方法,旨在解决传统的定时/计数器控制需要通过软件指令控制,导致算法运行速度低,且增加软件指令复杂性的问题。
本发明是这样实现的,一种异步定时/计数器之间的协同工作方法,所述异步定时/计数器之间设有同步电路,所述异步定时/计数器之间的协同工作方法包括:
将控制定时/计数器配置为主定时/计数器,将受控定时/计数器配置为从定时/计数器;
所述主定时/计数器和所述从定时/计数器均开启使能工作模式;
所述主定时/计数器的输出端输出一控制信号至所述同步电路,所述同步电路将所述控制信号从主定时/计数器的时钟域转换到所述从定时/计数器的时钟域后输出至所述从定时/计数器的输入端,所述从定时/计数器根据接收到的所述控制信号执行相应的控制操作。
在本发明中,所述异步定时/计数器之间的协同工作方法包括:将一个定时/计数器配置为主定时/计数器,另一个定时/计数器配置为从定时/计数器,所述主定时/计数器的输出端输出一控制信号经一同步电路至所述从定时/计数器的输入端实现对所述从定时/计数器的控制。在本发明中,所述主定时/计数器对所述从定时/计数器的控制是通过硬件电路触发的,而不需要复杂的软件指令,提高了算法的运行速度且降低了软件指令的复杂性。
附图说明
图1是本发明实施例提供的异步定时/计数器之间的协同工作方法的硬件结构图;
图2是本发明实施例提供的异步定时/计数器之间的协同工作方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明实施例提供的异步定时/计数器之间的协同工作方法的硬件结构图。为了便于说明,仅示出了与本发明实施例相关的部分。
如图1所示,包括定时/计数器1和定时/计数器2,在定时/计数器1和定时/计数器2之间设有一同步电路3。
图2示出了本发明实施例提供的异步定时/计数器之间的协同工作方法的流程图。为了便于说明,仅示出了与本发明实施例相关的部分。
一种异步定时/计数器之间的协同工作方法,包括如下步骤:
S1:将控制定时/计数器配置为主定时/计数器,将受控定时/计数器配置为从定时/计数器;
具体的,将图1中的定时/计数器1配置为主定时/计数器,定时/计数器2配置为从定时/计数器。
S2:所述主定时/计数器1和所述从定时/计数器2均开启使能工作模式;
定时/计数器有多种工作模式,当定时/计数器均处于使能工作模式时,可实现一个定时/计数器对另一个定时/计数器的控制。
S3:所述主定时/计数器1的输出端输出一控制信号m_out至所述同步电路3,所述同步电路3将所述控制信号m_out从主定时/计数器1的时钟域转换到所述从定时/计数器2的时钟域后输出至所述从定时/计数器的输入端,所述从定时/计数器根据接收到的信号s_in执行相应的控制操作;
其中,所述主定时/计数器1输出的控制信号m_out的来源(即可触发主定时/计数器输出控制信号的事件)有:
(1)主定时/计数器1内部的写寄存器tim_eve 11的up_data位,该寄存器是硬件自动清零,所以可产生一个周期的高电平信号;
(2)当主定时/计数器1内部的计数器寄存器cnt112计数到溢出值tover1时,则产生一个更新(复位)信号uev;
(3)主定时/计数器1的计数器13的使能信号cnt_en;
(4)在一次比较或者一次捕获中断的产生;
(5)PWM(Pulse Width Modulation,脉冲宽度调制)比较输出波形信号。
以上事件均可触发主定时/计数器1输出一控制信号至从定时/计数器2,实现主定时/计数器1对从定时/计数器2的控制,触发信号是由硬件电路实现的。具体的,提供了以下三种模式的异步定时/计数器之间的协同工作方法:
第一实施例
本发明第一实施例提供了一种将从定时/计数器2配置为复位模式的异步定时/计数器之间的协同工作方法。
作为本发明的一实施例,步骤S3具体为:
当所述主定时/计数器1内部的计数器寄存器12计数到溢出值时,所述主定时/计数器1的输出端输出一个周期的高电平信号经所述同步电路3至所述从定时/计数器2的输入端,所述从定时/计数器2内部的选择器21将所述高电平信号译成一复位信号,将所述从定时/计数器2内部的计数器寄存器22和分频计数器23重新初始化。
主定时/计数器1的溢出值、占空比和死区也将被更新,从而完成复位过程。
第二实施例
本发明第二实施例提供了一种将从定时/计数器2配置为门控模式的异步定时/计数器之间的协同工作方法。
作为本发明的第二实施例,步骤S3具体为:
当所述主定时/计数器1接收到PWM比较输出波形信号且所述主定时/计数器1内部的计数器寄存器12计数到所述PWM比较输出波形信号的占空比时,所述主定时/计数器1的输出端输出一高电平信号经所述同步电路3至所述从定时/计数器2的输入端,所述从定时/计数器2内部的定时器25开始计数。
作为本发明的一实施例,在上述步骤之后,步骤S3还包括:当所述主定时/计数器1内部的计数器寄存器12计数到溢出值时,所述主定时/计数器1的输出端输出一低电平信号经所述同步电路3至所述从定时/计数器2的输入端,所述从定时/计数器2内部的定时器25暂停计数。
作为本发明的一实施例,在步骤S3中,当所述从定时/计数器2的输入端信号为低电平时,所述从定时/计数器2内部的计数器寄存器22保持初始化的值。
第三实施例
本发明第三实施例提供了一种将从定时/计数器2配置为触发模式的异步定时/计数器之间的协同工作方法。
作为本发明的第三施例,步骤S3具体为:
当所述主定时/计数器1的输出信号由低电平变为高电平时,产生一触发信号经所述同步电路3至所述从定时/计数器2的输入端,所述从定时/计数器2内部的计数器24开始计数。
作为本发明的一实施例,步骤S3中,在所述从定时/计数器2的输入端信号为高电平之前,所述从定时/计数器2内部的计数器寄存器22保持初始化的值。
在本发明中,所述异步定时/计数器之间的协同工作方法包括:将一个定时/计数器配置为主定时/计数器,另一个定时/计数器配置为从定时/计数器,所述主定时/计数器的输出端输出一控制信号经一同步电路至所述从定时/计数器的输入端实现对所述从定时/计数器的控制。在本发明中,所述主定时/计数器对所述从定时/计数器的控制是通过硬件电路触发的,而不需要复杂的软件指令,提高了算法的运行速度且降低了软件指令的复杂性。
本领域普通技术人员可以理解:实现上述方法实施例的步骤或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。