怎样在PIC中使用定时器和看门狗定时器

在许多pic示例中,您将看到旨在在代码执行期间添加暂停的延迟。这种延迟的一个示例包括先前文章中的led闪烁代码,其使用简单的for循环来在led的on和off状态之间添加延迟。但是,有时这种延迟并不是很有用,特别是在需要精确定时时。
当需要精确定时时,会有非常有用的外设:定时器!与for循环延迟不同,定时器可以为定时事件提供非常准确的源并创建特定长度的延迟。通常,pic有许多不同的定时器,所以为了简单起见,我们只关注pic16f819中的timer0和看门狗定时器。
pic16f819中的timer0
大多数pic都有一个timer0,它通常是一个可以计时的8位定时器来自多个源,用于其他外设,并可在溢出时产生中断。这使它对关键的时序例程非常有用,但也可以用作通用计时器。使用定时器时,有两种主要方法可以实现:
定时器溢出时中断pic(计数超过255并重置为0)
探测定时器寄存器并查看它当前处于什么值?
由于我们尚未考虑中断,我们将专注于使用定时器进行1ms的简单延迟通过民意调查。使用定时器时的第一个任务是配置,这是通过配置与定时器相关的寄存器来完成的。对于pic16f819,option_reg保存配置定时器所需的位。
需要设置的第一位是定时器的时钟源。最常见的来源是内部指令时钟周期(基本上是工作频率/4),但您也可以从外部时钟源(馈入t0cki引脚)为定时器提供时钟。在我们的例子中,我们将从pic而不是外部源为它提供时钟。
可以设置的下一位是时钟边沿,它确定定时器是在上升沿还是下降沿递增;这很少使用,因此现在可以忽略。
下一位psa确定预定标器是分配给定时器还是分配给看门狗。在这个例子中,我们将把psa分配给看门狗,原因将在后面解释。
在xc8中的pic16f819上设置timer0
配置定时器后,可以在某些代码中使用它来延迟1ms。定时器由fosc/4提供时钟,我们的fosc为500khz,因此定时器将以125khz(或每8us一次)的速率递增。由于我们希望使用此定时器延迟1ms,我们需要确定定时器计时的时间,直到它达到大约1ms的值。这是一些数学的来源!
因此,当1ms过去时,定时器的值为125。所以在我们的延迟功能中,我们复位定时器值,然后等到定时器寄存器等于或大于125。
pic16f819中的看门狗定时器
看门狗定时器可以是真正的源痛苦,也可以使pic系统非常强大和可靠。但看门狗计时器究竟是什么?简单地说,看门狗定时器是pic中的硬件定时器,如果不经常由软件复位,将导致pic复位。如果pic由于硬件或软件问题而挂起并保证pic将从头重新启动,则此功能非常有用。它不仅重置了系统,还标记了一些可用于确定系统是否崩溃的位。
在使用看门狗之前,必须先启用它,这可以通过在代码顶部设置一个配置位来完成。如果您没有使用pic16f819,请检查数据表中使用的配置位,使用mplab x中的配置位选择系统,或使用google。
打开pic16f819上的看门狗定时器
下一步是检查看门狗是否与预缩放器一起使用;这是之前option_reg发挥作用的地方。由于我们不希望预定标器与timer0一起使用,我们将psa分配位设置为0,这意味着预分频器被分配给看门狗。但这如何影响看门狗的运作?从本质上讲,预分频器可以被认为是一个时钟分频器,所以如果你有一个1mhz的时钟进入具有2倍预分频器的看门狗,进入看门狗的时钟实际上是500khz(因为它除以2 )。
看门狗从内部31.25khz振荡器获取其时钟源,具有16ms周期,然后将该16ms脉冲馈入预定标器系统。这意味着看门狗可以在8种不同选项中的一种上超时(使用ps2:ps0位分配)。
000 - 16ms
001 - 32ms
010 - 64ms
011 - 128ms
100 - 256ms
101 - 512ms
110 - 1024ms
111 - 2048ms
对于我们的项目,我们将配置看门狗定时器,因此如果项目挂起超过一秒钟,系统将重置。
设置已分配给看门狗的预缩放器
所以现在我们有一个看门狗,它会在挂起时每秒重置一次pic,但我们如何确定挂?这是一个有用的函数:clrwdt()。调用此函数后,它将自动重置看门狗定时器。此函数应放在主循环代码段中,以便pic不复位,主代码需要经常迭代一次。
重置看门狗定时器所需的功能
计时器:必要的外围设备
定时器可以是很棒的外设,你应该尽快利用它们。它们可以提供准确的计时,计数甚至无挂起的系统。 pic有时还有其他具有许多高级功能的定时器,例如16位和门控,可用于控制其他外设。总的来说,不要犹豫使用计时器!

stm325个串口的配置函数 STM32串口如何发送数据
MiR500自主移动机器人,投入到生产链物流
图腾柱TCM之两相变频错相的两种方法
台式万用表和数字万用表使用
如何改进CPU性能发展瓶颈问题?
怎样在PIC中使用定时器和看门狗定时器
华为的麒麟990 5G到底是个什么样的处理器?
多家企业将具有国家企业技术中心及分中心资格
智佳能扩产“抢跑”新能源仓储物流赛道
展会回顾|安泰电子第31届西部制博会完美落幕,期待与您再相会!
IGBT管的功耗讲解
透射电镜TEM测试原理及过程
聚焦伺服系统差异化国产解决方案
数据库引擎是什么
光合强度测定仪产品特点介绍
IGBT用什么驱动好
填补COTS子系统集成的空白
电炉子跳闸是什么原因
如何保证云上业务高可用性的同时系统不被入侵
网络欺诈检测系统的应用优势是什么