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

    浏览量

    86610
  • 定时器
    +关注

    关注

    23

    文章

    3144

    浏览量

    112004
收藏 人收藏

    评论

    相关推荐

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

    电子发烧友网站提供《带看门狗定时器的电压监视器TPS382x-xx-Q1数据表.pdf》资料免费下载
    发表于 04-03 09:52 0次下载
    带<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>的微处理器监控器UCCx946数据表

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

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

    STM32L431RCT6触发ADC模拟看门狗规则通道转换后,定时器中断事件无法触发注入通道事件,为什么?

    模拟看门狗配置如图,调试知定时器中断正常触发,但是定时器中断事件无法触发注入通道事件
    发表于 03-15 07:12

    国产嵌入式教学实验箱操作教程:2-13 定时器控制实验

    计数的count,如果用作定时就是先输入一个数字,然后来了一个时钟之后count自动减一。如果用成计数就是一个脉冲到来之后count自动加一。 (3)看门狗 一些
    发表于 02-21 14:09

    CE220060和CE220061如何让看门狗定时器的复位时间变得长一些?

    我参考了例程代码CE220060和CE220061。 想让看门狗定时器的复位时间变得长一些。 但是我现在的问题是,我发现CE220060的例子部分,根本就没有原理图组件里面添加MCWDT,而CE220061虽然介绍了级联的配置
    发表于 02-21 08:13

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

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

    AXI时基看门狗定时器(WDT)概述

    XilinxLogiCORE IP AXI4-Lite时基看门狗定时器(WDT)是一个32位外设,提供32位自由运行时基和看门狗定时器
    的头像 发表于 10-16 11:10 604次阅读
    AXI时基<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>(WDT)概述

    看门狗的基本原理和RV-STAR独立看门狗(FWDGT)的使用方法

    看门狗定时器(Watch Dog Timer,WDT或WDGT),是一种微控制为了防止程序“跑飞”而设计的一种硬件机制,让系统因电磁干扰或者软件错误而当机的时候可以复位系统,从而具
    发表于 08-16 08:13

    基于RT-Thread对N32L40XCL的看门狗定时器进行测试

    N32L40XCL 内置独立看门狗(IWDG)和窗口看门狗(WWDG)定时器,解决软件错误导致的问题。看门狗定时器使用非常灵活,提高了系统的
    的头像 发表于 08-08 17:24 833次阅读
    基于RT-Thread对N32L40XCL的<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>进行测试

    STM32L431RCT6触发ADC模拟看门狗规则通道转换后,由定时器触发的注入通道中断会失效怎么处理?

    模拟看门狗配置如图,调试知定时器中断正常触发,但是定时器中断事件无法触发注入通道事件
    发表于 08-05 07:31

    STM32看门狗定时器的工作原理和作用 看门狗定时器的特性

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般来说都是向下计数的,给看门狗一个数字,程序开始运行后看门狗开始倒计数。
    的头像 发表于 07-27 16:30 4002次阅读
    STM32<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的工作原理和作用 <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的特性

    STM32F03定时器基础知识基本简介

    STM32F103微控制器的定时器分为系统定时器(SysTick)、“看门狗定时器(WatchDog)、基本定时器、通用
    的头像 发表于 07-03 17:08 2540次阅读
    STM32F03<b class='flag-5'>定时器</b>基础知识基本简介

    CKS32F4xx系列产品的定时器使用-基本特征和定时操作

    这一课我们将介绍CKS32F4XX系列产品的定时器使用,CKS32F4XX的定时器功能十分强大,包含2个高级控制定时器,8个普通定时器,2个基础定时
    的头像 发表于 05-19 09:18 539次阅读
    CKS32F4xx系列产品的<b class='flag-5'>定时器</b>使用-基本特征和<b class='flag-5'>定时</b>操作

    使用MAX6369系列看门狗定时器的不同方式

    MAX6369-74系列引脚可选的看门狗定时器设计用于监控微处理器的活动,并在系统工作不正常时发出指示。在正常操作期间,微处理器应在选定的看门狗超时期限过去之前重复切换看门狗输入 (W
    的头像 发表于 05-08 11:26 1968次阅读
    使用MAX6369系列<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的不同方式