输出比较的功能是用来在程序规定的时候输出所需要的电平,以实现对外部电路的控制。当定时器模块的某一通道工作在输出比较模式时,计数器的值每变化一次就会与该通道的通道值寄存器值进行比较,当两者相等时,输出比较模块将定时器通道状态与控制寄存器TPMxCnSC的CHnF置位,并且在该通道的引脚上出现预先规定的电平,如果输出比较中断允许就会产生一个中断。输出比较功能的结构示意图如图8-4所示,可以看出,输出比较功能由计数器、通道值寄存器、比较器、中断逻辑及引脚控制组成。
图8-4 输出比较功能的结构示意图
1.输出比较执行过程
在输出比较过程中,周期由定时器模块的模寄存器决定,而电平宽度由通道值寄存器决定,输出比较过程示意图如图8-5所示。当计数器值与通道值相等时,通道引脚上就发生预先设定的电平变化,图中由高电平变化成低电平,这种变化由通道状态和控制寄存器TPMxCnSC的MSnB、MSnA、ELSnB和ELSnA位决定。
图8-5 输出比较过程示意图(www.xing528.com)
当通道被配置为输出比较模式时(CPWMS=0,MSnB:MSnA=01,ELSnB:ELSnA≠00),通道引脚TPMxCHn引脚将忽略相关数据方向控制,并认为是由TPM控制输出,此时ELSnB:ELSnA控制位将决定引脚实现何种输出状态。ELSnB:ELSnA有三种组合值决定TPMxCHn引脚是否被锁存、清空或置位。
通道值寄存器是输出比较功能中一个重要组成部分,输出比较功能中的“比较”,其实就是通道值寄存器的值与当前计数器的值进行比较。通道值寄存器是一个16位的寄存器,分高字节和低字节与16位计数器相匹配,写入任何一个字节都会将值存到缓冲器中,当两个字节都写入时,其值才会被连续送入通道值寄存器中。通道寄存器值的大小决定了输出电平的时间点。
2.输出比较应用
对比使用延时来得到所需输出电平的方法,输出比较功能的优势在于可以得到非常精确的输出时间间隔,硬件的比较功能不受其他中断的影响,而且对用户程序没有额外的负担。
输出比较最简单、最常用的功能就是产生一定间隔的脉冲。典型的应用实例就是实现软件的串行通信。首先根据通信的波特率向通道寄存器写入延时的值,根据待传的数据位确定有效输出电平的高低。在输出比较中断处理程序中,重新更改通道寄存器的值,并根据下一位数据改写有效输出电平控制位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。