PIC32MZ tutorial -- Watchdog Timer

发布者:京玩儿最新更新时间:2017-01-20 来源: eefocus关键字:PIC32MZ  tutorial  Watchdog  Timer 手机看文章 扫描二维码
随时随地手机看文章

  Watchdog is a very necessary module for embedded system. Someone said that embedded system operates without watchdog enabled just like the car without air bag. You should always enabled watchdog as possible as you can. 


  The PIC32MZ Watchdog Timer (WDT), when enabled, operates from the internal Low-Power RC (LPRC) Oscillator clock source which is 32.768 KHz. The WDT can be used to detect system software malfunctions by resetting the device if the WST is not cleared periodically in software. The WDT can be configured in Windowed mode or non-Windowed mode. Various WDT time-out periods can be selected using the WDT postscaler. The WDT can also be used to wake the device from Sleep or Idle mode.


  At the moment, I implement the primary function of the WDT is to reset the processor in the event of a software malfunction. I enable WDT with Non-Windowed mode, and the WDT will increment until it overflows or "times out". A WDT time-out will force a device Reset, except during Sleep or Idle modes. To prevent a WDT time-out Reset, my application always periodically clear the WDT by writing a key word 0x5743 to the WDTCLEKEY (WDTCON<31:16>) through a single 16-bit write (for some other devices, or by setting the WDTCLR (WDTCON<0>).


  The WDT is enabled or disabled by the device configuration bits or controlled through software by writing to the WDTCON register. In my application I just set the device configuration bits like below.


#pragma config WDTPS = PS32 // Watchdog Timer Postscaler (1:32)

#pragma config WDTSPGM = STOP // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)

#pragma config WINDIS = NORMAL // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)

#pragma config FWDTEN = OFF // Watchdog Timer Enable (WDT Disabled)

#pragma config FWDTWINSZ = WINSZ_25 // Watchdog Timer Window Size (Window size is 25%)

  The setting as above, the postscaler of Watchdog Timer is 32. It determines the period of Watchdog Timer overflow is 32ms. The FWDTEN Configuration bit is clear, so I need enable Watchdog Timer by software, and I also need a function to clear Watchdog and call this function periodically in the main loop. Below is my implementation of them.


  


void Wdt_Init(void)

{

    WDTCONSET = 0x8000;

}


void Wdt_Refresh(void)

    unsigned short *pWdtClear = (unsigned short *)0xBF800800 + 1;

    *pWdtClear = 0x5743;

}


关键字:PIC32MZ  tutorial  Watchdog  Timer 引用地址:PIC32MZ tutorial -- Watchdog Timer

上一篇:PIC32MZ tutorial -- External Interrupt
下一篇:PIC32MZ tutorial -- Output Compare

推荐阅读最新更新时间:2024-03-16 15:31

STM32L151C8周期性从待机模式唤醒(RTC Wakeup Timer
#include stm32l1xx.h #include system_stm32l1xx.h #include OLED.h #include delay.h void RtcWakeUpConfig(void); u8 RtcInit(void); u8 RtcConfig(void); int main() { DelayInit(); //延时初始化 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR时钟 if(PWR_GetFlagStatus(PWR_FLAG_SB)) //从待机模式唤醒 { PWR_Cle
[单片机]
PIC32MZ】USB HID通信
在设备通信中,UART非常常见,也是最简单的,但是,PC尤其是笔记本基本都舍弃了传统的UART端口,只能使用usb转UART的IC来做信号转换,这样效率低,而且还要针对IC安装专门的驱动,非常不方便,而在有些特殊设备上,甚至驱动无法安装,是否可以不安装驱动与PC通信呢? 当然可以! 在USB盛行的今天,USB通信变得极其简单,而在USB中有一个重要的通信标准,就是HID(Human Interface Device),常见的鼠标键盘就是采用HID通信。由于它的标准性,几乎所有PC系统(Windows、Linux、OSX)都集成了它的驱动,所以,可以将它看做一个免驱的设备,类似的还有USB大容量存储。下面我们就用PIC32M
[单片机]
【<font color='red'>PIC32MZ</font>】USB HID通信
快速学Arm(13)--看门狗(WatchDog)
WatchDog,中文为 看门狗 ,老外起的名字有时很有趣也很贴切,这些从事技术的老外对生活总是充满了乐观的态度,把工作当成乐趣而不要认为他是痛苦的事情,这样才能把工作做好.否则就不要去做,不仅仅是为了不至于让你变得忧郁,关键是天天做自己认为痛苦的事情,其最终的结果往往也是痛苦的. 一样,我总是喜欢用自己的理解而不是无聊的术语来讲解我所理解的东西.WatchDog是为了能够防止程序跑飞而使用的一种东西.如果你的程序没有跑飞,那么你的程序会定时的去喂的看门狗,如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会自己生成一个信号来重新reset你的CPU,重新开始.这是一种在很重要的情况下防止系统跑飞的一种方
[单片机]
快速学Arm(13)--看门狗(<font color='red'>WatchDog</font>)
远程修改STM32 TIMER占空比的方案
现在有人有这样一个需求,他使用STM32F429芯片做开发,其中用到32位的TIM2实现3路PWM输出。 另外有上位机跟STM32的UART接口相连,上位机可能不定期地需要通过UART接口给STM32发送新的占空比参数,而且每次都发送3个比较输出通道的参数【12个字节】。 如何快捷地实现这个功能呢?要求收到数据后尽快修改3个比较通道的参数。 前一篇重点介绍了利用DMAFIFO和UART接收事件触发DMA传输实现了3个CCR寄存器的批量修改。 我们不妨就该话题稍作拓展,不再局限于某个STM32系列,而是从整个STM32的资源上考虑当前需求。上次提到3种实现方案,我想借此机会再给大家介绍另外一种实现方案,以拓宽未来解决
[单片机]
远程修改STM32 <font color='red'>TIMER</font>占空比的方案
Watchdog在Philips 8XC552系列单片机系统中的应用
   1 引言      Philips公司的8XC552单片机以其体积小、功能强、价格低等优势而广泛地使用在工业控制、DCS控制和智能仪器等领域。笔者在智能配电监测仪的研制过程中,虽然采取了相应的抗干扰措施,但由于工业现场环境中电磁场、电网尖峰、谐波、浪涌及雷电辐射等影响,仍有可能出现程序死循环、跑飞等失控现象。为此,笔者采用Watchdog技术保证了系统的正常运行,通常Watchdog技术在单片机应用系统中可分为软件Watchdog和硬件Watchdog。Philips公司的8XC552、Intel的8098、Motorala的68C05以及Microchip的16C5X系列单片机本身已带有软件Watchdog功能,因此,只要
[应用]
STM8L之timer2产生PWM - CSDN博客
一、简介 本文介绍STM8L系列如何使用timer2产生38K频率的PWM。 其中,本文使用的是timer2的第1通道(PB0)。 二、实验平台 编译软件:IAR for STM8 1.42.2 硬件平台:stm8l101f3p6开发板 仿真器:ST-LINK 库函数版本:STM8L_STMTouch_Lib_V1.1.0 三、版权声明 原文地址:http://blog.csdn.NET/feilusia 四、实验步骤 1、工程中添加自己写的定时器2的驱动 1)写一个驱动GUA_Timer2_PWM.c (存放在工程的USER文件夹中) //************
[单片机]
C51定时器和计数器 timer and counter
代码: #include reg52.h unsigned char a,num; sbit LED1=P1^0; void main() { num=0; EA=1; //开总中断 ET0=1; //开定时器 0 分开关 TMOD=0X01; //设置为定时器 0 ,方式 1 TH0=(65536-50000)/256; //给定时器 0 装初值,12 Mhz晶振定时时间为 50ms TL0=(65536-50000)%256; TR0=1; //启动定时器0 while(1) { if(num==20) { num=0; LED1=~LED1; } } } void time
[单片机]
C51定时器和计数器 <font color='red'>timer</font> and counter
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved