SCTimer/PWM定时器(续一)
下面是SCT事件中断使能寄存器EVEN,其字节地址为0x500040F0,下表给出了它的全部位结构。

如果在SCT事件标志寄存器(如下)中设置了FLAGn位,则该寄存器使能请求中断的标志。
下面是SCT事件标志寄存器EVFLAG,其字节地址为0x500040F4,下表给出了它的全部位结构。

该寄存器会记录各种事件,把1写入到该寄存器时,会清除相应的标志,当所有使能的标志寄存器位为零时,将会取消SCT中断请求。
下面是SCT冲突中断使能寄存器CONEN,其字节地址为0x500040F8,下表给出了它的全部位结构。

该寄存器使能SCT冲突解决寄存器RES中所指定的“无变化冲突”事件,以生成中断请求。
下面是SCT冲突标志寄存器CONFLAG,其字节地址为0x500040FC,下表给出了它的全部位结构。

该寄存器会记录无变化冲突事件,并提供详细的总线错误信息。把1写入NCFLAG位会清除相应的读取位,当所有已使能标志位为零时,将会取消SCT中断请求。
下面是SCT匹配寄存器MATCH0到MATCH7共8个通道,其字节地址从0x50004100到0x5000411C,下表给出了它的全部位结构。

匹配寄存器与计数器进行比较来创建事件,匹配事件仅发生在计数器运行(STOP和HALT均为0)时所在的时钟周期内。只有在计数器终止(CTRL寄存器中的HALT位置位为1)运行时,才能向 MATCH_L、MATCH_H或统一寄存器进行写入操作。匹配事件发生在SCT时钟周期内,在该时钟周期内,计数器的计数递增至下一个值(或将递增至下一个值)。当匹配事件限制了其计数器(如16.6.4章所述)时,匹配寄存器中的值在其清零之前将为该计数器的最后一个值(或,在BIDIR为1时递减)。
无论是重新载入寄存器还是匹配寄存器,都不能采用“透写”机制。在启动计数器之前,软件可以把值1写入到在计数器第一个周期中所使用的匹配寄存器中,并且把另一个值写入到在计数器第二个周期中所使用的对应匹配重新载入寄存器中。此外,软件可以随时读取匹配寄存器的值。
下面是SCT捕获寄存器CAP0到CAP7共8个通道,其字节地址从0x50004100到0x5000411C,下表给出了它的全部位结构。

这些寄存器允许软件记录相应捕获控制寄存器选取的事件发生时的计数器值。
注意,以上的匹配寄存器和捕获寄存器都是共用地址空间的(在结构体定义中使用了共用体)。由前面的匹配/捕获寄存器模式寄存器REGMODE进行选择,当REGMODEn bit = 0时,选择的是匹配寄存器功能,当REGMODEn bit = 1时,选择的是捕获寄存器功能。
下面是SCT匹配重新载入寄存器MATCHREL0到MATCHREL7共8个通道,其字节地址从0x50004200到0x5000421C,下表给出了它的全部位结构。

在每个新计数器周期开始时,会从相应的重新加载寄存器中加载主机寄存器(L、H、或统一32位),也就是:
•当BIDIR = 0且计数器在达到限制条件清零的时候。
•当BIDIR = 1且计数器递减计数至0的时候,除非适当的NORELOAD位在CFG寄存 器中置位。
下面是SCT捕获控制寄存器CAPCTRL0到CAPCTRL7共8个通道,其字节地址从0x50004200到0x5000421C,下表给出了它的全部位结构。

基于选定的事件,在事件发生时,捕获寄存器可加载当前的计数器数值。每个捕获控制寄存器(L寄存器、H寄存器或统一32位寄存器)将控制使用哪个事件从计数器中加载相应的捕获寄存器。
注意,以上的匹配重新载入寄存器和捕获控制寄存器同样是共用地址空间的(在结构体定义中使用了共用体)。由前面的匹配/捕获寄存器模式寄存器REGMODE进行选择,当REGMODEn bit = 0时,选择的是匹配重新载入寄存器功能,当REGMODEn bit = 1时,选择的是捕获控制寄存器功能。
下面是SCT事件使能寄存器EV0_STATE到EV7_STATE共8个通道,其字节地址从0x50004300到0x50004338,下表给出了它的全部位结构。

每个事件都能按选定状态使能,并在其他状态下禁用。EV_CTRL寄存器指定的每个事件都具有一个关联事件使能寄存器,该寄存器可针对每种可用状态使能或禁用事件。
每个事件都有一个相关的SCT事件状态屏蔽寄存器,它允许该事件发生在HEVENT位(位于相应的EVn_CTRL寄存器中)所选的计数器的一个或多个状态下。
当其EVn_STATE寄存器始终为零时,会禁用事件n,因为无论当前为何种状态事件n均会被屏蔽。
在不使用状态的简单应用中,将0x01写入此寄存器可使能一种状态的各个事件。由于该状态未改变(也就是说,状态变量始终保持其复位值0),因此写入0x01可以永久使能此事件。
下面是SCT事件控制寄存器EV0_CTRL到EV7_CTRL共8个通道,其字节地址从0x50004304到0x5000433C,下表给出了它的全部位结构。

该寄存器根据计数器值或输入和输出状态来定义事件发生的条件。事件配置之后,可按照其目的触发任何操作(例如,停止计数器和切换输出),除非SCT的当前状态已拦截事件或者已终止计数器。为了防止特定事件在给定环境下发生,请使用EV_STATE寄存器。为了拦截给定计数器的所有事件,置位CTRL寄存器中的HALT位或者选择一个事件来终止计数器。
根据所选的输入(输出)边沿或输入(输出)电平以及/或者根据与所选的匹配寄存器相匹配的计数器值,可对已使能的事件编程设置使其发生。在双向模式中,事件也可以根据计数方向使能。
每个事件都可以修改其计数器的STATE值。如果在指定的时钟周期内发生了与相同计数器相关的多个事件,则仅会发生为最大编号事件指定的状态更改。任何同步发生的事件所指示的其他操作也会发生。
当UNIFY位为0时,每个事件都与其事件控制寄存器中HEVENT位所选的特定计数器有关。当其事件状态屏蔽寄存器始终为0时,将会永久禁用事件。
注意,以上两个寄存器组(事件使能寄存器和事件控制寄存器)的地址是相互交叉的,即以0到7的编号对两个寄存器进行连续编址。
下面是SCT输出置位寄存器OUT0_SET到OUT5_SET共6个通道,其字节地址从0x50004500到0x50004528,下表给出了它的全部位结构。

根据选定的事件,每个SCT输出都可以置位。每个SCT输出都有一个输出置位寄存器,该寄存器可以选择由哪些事件置位该输出。输出置位寄存器的每个位都关联一个不同事件(事件0为位0,等)。选定事件是可以置位输出还是清除输出,要取决于OUTPUTDIRCTRL寄存器中的SETCLRn字段设置。为了限制置位输出的实际事件(匹配,I/O引脚切换等),请参考EVn_CTRL寄存器。注意,如果SCTimer/PWM做为两个16位计数器运行,则只有在两个计数器都不处于终止状态时才能更改输出的状态。不管事件因何触发,情况都是如此。
下面是SCT输出清除寄存器OUT0_CLR到OUT5_CLR共6个通道,其字节地址从0x50004504到0x5000452C,下表给出了它的全部位结构。
根据选定的事件,每个SCT输出都可以被清除。每个SCT输出都有一个寄存器,该寄存器可以选择由哪些事件清除该输出。输出清除寄存器的每个位都关联一个不同事件(事件0为位0,等)。选定事件是可以置位输出还是清除输出,要取决于OUTPUTDIRCTRL寄存器中的SETCLRn字段设置。为了限制清除输出的实际事件(匹配,I/O引脚切换等),请参考EVn_CTRL寄存器。注意,如果SCTimer/PWM做为两个16位计数器运行,则只有在两个计数器都不处于终止状态时才能更改输出的状态。不管事件因何触发,情况都是如此。
--待续--

浙公网安备 33010602011771号