0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 来源:工程师吴畏 2019-07-26 10:21 次阅读

在许多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分配给看门狗,原因将在后面解释。

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

在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位和门控,可用于控制其他外设。总的来说,不要犹豫使用计时器!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PIC
    PIC
    +关注

    关注

    8

    文章

    507

    浏览量

    87420
  • 定时器
    +关注

    关注

    23

    文章

    3230

    浏览量

    114313
收藏 人收藏

    评论

    相关推荐

    看门狗定时器的工作原理

    看门狗定时器是一种独立的计时硬件模块,其核心功能是倒计时。如果系统软件计时超时前没有对其进行复位操作(即“喂狗”),
    的头像 发表于 10-21 14:18 201次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的工作原理

    禁用Tl系列监控看门狗定时器

    电子发烧友网站提供《禁用Tl系列监控看门狗定时器.pdf》资料免费下载
    发表于 10-12 09:40 0次下载
    禁用Tl系列监控<b class='flag-5'>器</b>的<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    DRV3205-Q1的问答看门狗定时器配置

    电子发烧友网站提供《DRV3205-Q1的问答看门狗定时器配置.pdf》资料免费下载
    发表于 09-30 10:42 0次下载
    DRV3205-Q1的问答<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>配置

    单片机开发:使用内部看门狗定时器(WDT)还是外挂看门狗芯片?

    电子产品中,有时候需要看门狗定时器(WDT),看门狗芯片有外部和内置两种。设计之初,要不要使用看门狗
    发表于 09-25 13:46

    如何在PSOC创建者项目中确认看门狗定时器已启用?

    您好,我是 PSOC BLE 部件的新手,只有一项任务,即确认看门狗定时器是否正确启用并按需要工作。我是 PSOC Creator 的新用户。如有任何帮助,将不胜感激。如何在 PSOC 创建者项目中确认看门狗
    发表于 07-02 07:10

    CX3看门狗定时器何时使用,有什么好处?

    我正在犹豫是否要在印刷电路板上安装运行看门狗定时器的元件,因此提出了这个问题。 我的设计中,摄像头一直用于视频流,因此 CX3 从未进入睡眠模式。 此外,我不明白为什么要为 ARM926EJ-S
    发表于 05-28 08:13

    看门狗定时器的电压监视TPS382x-xx-Q1数据表

    电子发烧友网站提供《带看门狗定时器的电压监视TPS382x-xx-Q1数据表.pdf》资料免费下载
    发表于 04-03 09:52 0次下载
    带<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的电压监视<b class='flag-5'>器</b>TPS382x-xx-Q1数据表

    看门狗定时器的微处理监控UCCx946数据表

    电子发烧友网站提供《带看门狗定时器的微处理监控UCCx946数据表.pdf》资料免费下载
    发表于 04-01 15:26 0次下载
    带<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的微处理<b class='flag-5'>器</b>监控<b class='flag-5'>器</b>UCCx946数据表

    集成有看门狗定时器的高精度电压监控TPS3851数据表

    电子发烧友网站提供《集成有看门狗定时器的高精度电压监控TPS3851数据表.pdf》资料免费下载
    发表于 03-29 10:00 0次下载
    集成有<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的高精度电压监控<b class='flag-5'>器</b>TPS3851数据表

    具备可编程窗口看门狗定时器的高精度电压监控TPS3850-Q1数据表

    电子发烧友网站提供《具备可编程窗口看门狗定时器的高精度电压监控TPS3850-Q1数据表.pdf》资料免费下载
    发表于 03-28 17:28 0次下载
    具备可编程窗口<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的高精度电压监控<b class='flag-5'>器</b>TPS3850-Q1数据表

    集成看门狗定时器的高精度电压监控TPS3851-Q1数据表

    电子发烧友网站提供《集成看门狗定时器的高精度电压监控TPS3851-Q1数据表.pdf》资料免费下载
    发表于 03-28 17:25 0次下载
    集成<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的高精度电压监控<b class='flag-5'>器</b>TPS3851-Q1数据表

    具备可编程窗口看门狗定时器的高精度电压监控TPS3850数据表

    电子发烧友网站提供《具备可编程窗口看门狗定时器的高精度电压监控TPS3850数据表.pdf》资料免费下载
    发表于 03-14 11:12 0次下载
    具备可编程窗口<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的高精度电压监控<b class='flag-5'>器</b>TPS3850数据表

    带可编程延迟和看门狗定时器TPS386000-Q1数据表

    电子发烧友网站提供《带可编程延迟和看门狗定时器TPS386000-Q1数据表.pdf》资料免费下载
    发表于 03-14 10:57 0次下载
    带可编程延迟和<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>TPS386000-Q1数据表

    求助,关于看门狗定时器的喂狗时间和多APP看门狗的问题求解

    参考例程,在看门狗定时器时间的配置上,我看到如下函数: /* Step 3- Write match value */ #if(WDT_DEMO == WDT_INTERRUPT_DEMO
    发表于 02-21 06:50

    什么是看门狗?如何实现对系统程序的监控?

    看门狗通过定时器计数和相关的控制逻辑来实现功能。系统正常运行时,定时器会以固定的时间间隔重复计数,如果系统一切正常,那么
    的头像 发表于 02-02 15:58 2283次阅读