原创 PIC32795F512L单片机看门狗定时器应用

2016-4-20 10:45 1786 18 18 分类: MCU/ 嵌入式 文集: 硬件开发学习

这几天研究了PIC32795F512L单片机中看门狗部分内容,pic32整体中文资料较少,针对本项目的设计要求,通过学习理解如下:

1、整体了解:WDT(WATCHDOG TIMER)被使能时,工作于内部低功耗RC(Low-power RC,LPRC) 31khz振荡器时钟源。WDT可用于检测系统软件故障,如果软件未定期清零WDT,器件将被复位。可使用WDT后分频器选择各种WDT超时周期。

2、看门狗定时器相关控制寄存器:特殊功能寄存器(special function register,SFR)

(1)WDTCON为看门狗定时器控制寄存器,其中WDTCONCLR、WDTCONSET和WDTCONINV为WDTCON的原子级位操作寄存器,所谓原子级位操作,就是可以直接对寄存器中具体哪一位进行相关操作。

(2)RCON复位控制和状态寄存器,其中RCONCLR、RCONSET和RCONINV为RCON的原子级位操作寄存器。

(3)DEVCFG1器件配置寄存器

以上寄存器均与单片机看门狗部分相关,具体寄存器中的每一位的定义以及操作请参考:

http://www.doc88.com/p-402265489108.html

3、看门狗具体编程实现

如果FWDTEN器件配置位DEVCFG1<23>的值为0则可以通过软件使能或禁止WDT。在该模式下ON位WDTCON<15>会反映软件控制下的WDT状态。值为1指示WDT已使能0指示它已被禁止。用软件通过将WDT ON控制位置1来使能WDT。任何器件复位都会导致WDT ON控制位清零。该位在从SLEEP休眠模式唤醒或从IDLE空闲模式退出时不会清零。 软件WDT选项允许用户在关键代码段使能WDT并在非关键代码段禁止WDT从而最大限度地降低功耗。WDT ON控制位还可以用于在器件正常工作时禁止WDT从而不需要执行WDT处理之后在器件置为IDLE空闲或SLEEP休眠模式之前重新使能WDT以便稍后唤醒器件。

实例编程如下:

// This code fragment assumes the WDT was not enabled by

// the device configuration

// The Postscaler value must be set with the device configuration

WDTCONSET = 0x8000;// Turn on the WDT

main()

{

WDTCONSET = 0x01;// Service the WDT

... User code goes here ...

}

在实际项目中,MPLAB X IDE编译环境下,在MAIN函数初始化中作如下操作:

pic1.jpg
其中FWDTEN为DEVCFG1中bit23位,FWDTEN具体为看门狗定时器使能位,1 = WDT被使能且无法用软件禁止,0 = WDT未使能,可用软件使能。WDTPS为看门狗定时器后
 
分频比选择位,用于定义WDT周期,具体参数如下图所示:
pic2.jpg

有必要解释程序代码中#pragma config的作用和意义,即配置 pragma 伪指令进行设置。该 pragma 伪指令具有以下形式:

#pragma config setting = state|value
               #pragma config register = value
其中, setting 是配置设置描述符(如WDT),state是所需状态的文本描述(如OFF),value字段是一个可以优先用于描述符的数值。

在本项目的开发环境中,可以通过以下方式查看PIC32795F512L单片机中的相关伪指令的参数:

pic3.jpg

在界面下方可参考选择相应数值设置。

此外,实际代码中有以下几个封装好可直接调用的函数:

(1)、// WDT timeout period is set in the Device Configuration

         EnableWDT(); // enable the WDT

(2)                          // user code

                            ClearWDT(); // service the WDT

(3)// A WDT event did occur

          DisableWDT();

         ClearEventWDT();   // clear the WDT event flag so a subsequent event can set the event bit

这些函数均可在头文件wdt.h中查到定义。

 参考资料:http://www.doc88.com/p-402265489108.html

http://microchip.wikidot.com/8bit:wdt

http://blog.sina.com.cn/s/blog_7f6a64220102uxys.html

http://blog.sina.com.cn/s/blog_64ddebbc0101iqbb.html

http://bbs.ednchina.com/BLOG_ARTICLE_3010954.HTM

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
18
关闭 站长推荐上一条 /3 下一条