首页 > 解决方案 > 如何在 PIC16F1827 上同步两个定时器

问题描述

我刚开始在 Microchips MPLAB X IDE 上进行 PIC 编程。我的程序需要两个计时器。TMR4 的中断间隔为 500ms,TMR2 每秒中断一次。启动程序时,两个定时器是同步的,所以在很小的误差范围内,当TMR4第二次中断时,TMR2也执行中断代码。但是当我停止 TMR2 一段时间然后重新启动它时,两个定时器完全不同步。

有没有办法重新同步两个计时器或重新启动它们?

标签: timerpicmicrochipmplabxc8

解决方案


你为什么要停止计时器?

发生中断时无需停止。TMR2并且TMR4功能相同。当中断被触发时,TMR2IF或被TMR4IF设置。如果也设置TMR2IETMR4IE然后触发中断。

寄存器PR2PR4(也是预分频器)必须根据所需的频率进行设置。TMR2或的值在每个时钟周期TMR4与周期寄存器PR2或的值进行比较。PR4当两个值匹配时,比较器产生一个匹配信号作为定时器输出并触发中断,TMR2IFTMR4IF置位。如果也设置TMR2IETMR4IE然后触发中断。该信号还将TMR2TMR4计数器的值复位为 0,定时器继续运行。当你完成你的中断程序时,只需清除TMR2IFTMR4IF启用下一个定时器中断。

如果您不想重新同步计时器,只需将TMR2TMR4寄存器的值重置为 0。如果您不想在主程序中重新同步,则首先禁用中断清除TMR2TMR4再次启用中断。


推荐阅读