当前位置:文档之家› S3C2410中文手册第18章_看门狗定时器

S3C2410中文手册第18章_看门狗定时器

S3C2410中文手册第18章_看门狗定时器
S3C2410中文手册第18章_看门狗定时器

第十八章看门狗定时器

概述

S3C2410的看门狗定时器用于当系统被噪声或系统错误等故障打断时返回控制器操作状态。它可以用作一个普通的16位内部定时器来请求中断。WDT产生一个128个PCLK周期的复位信号。

特性

—具有中断请求的正常内部定时器模式

—当定时器计数值到达0时产生一个128个PCLK周期的内部复位信号

看门狗定时器操作

图18-1描述了WDT的功能方框图。WDT只使用PCLK作为其时钟源。PCLK 频率经过预定标器,然后再进行分频产生相应的WDT时钟。

预定标器的值和分频因数在WDT控制寄存器WTCON中指定,有效的预定标器的值在0-(2的8次方-1)之间,分频因数可选为16、32、64、128。

使用下式计算WDT频率和每个定时器时钟周期的容差

t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )

WTDAT和WTCNT

一旦WDT使能,WTDAT寄存器的值不能自动加载进WTCNT,因此必须在WDT启动前向WTCNT写入初始值。

调试环境的考虑

当S3C2410在使用嵌入式ICE调试模式时,WDT将自动关闭。

WDT可以通过CPU核心信号--DBGACK判断当前是否处于调试模式,一旦DBGACK信号被断言,WDT的复位输出将会无效,因为看门狗被中止工作。

WDT控制寄存器WTCON

WTCON寄存器允许使能/禁止WDT、选择4个不同的时钟信号源、使能/禁止中断、使能/禁止WDT输出。

WDT用于从故障后复位CPU,如果不需要复位,则应该禁止WDT。

如果希望将WDT用作普通定时器,使能中断并关闭看门狗。

WDT数据寄存器WTDAT

WTDAT寄存器中的值指定溢出的时间。它不会在初始化WDT时自动加载到WTCNT中,但是用0x8000(初始值)将导致第一次溢出。这种情况下,WTDAT的值将自动加载到WTCNT中。

WDT计数寄存器

WTCNT显示WDT的当前值。注意WTDAT的值不会在初始化WDT使能时自动加载到WTCNT中,因此在使能WDT前必须手动设置WTCNT的初始值。

看门狗定时器参考资料

看门狗定时器参考资料: S3C2410A 的看门狗定时器有两个功能:作为常规时钟,并且可以产生中断; 作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128 个时钟周期(PCLK)的复位信号. 主要特性如下: 通用的中断方式的16bit 定时器. 当计数器减到0(发生溢出) ,产生128 个PCLK 周期的复位信号. 下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分频产生适合的看门狗时钟. 看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器.看门狗的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分频器分频.预分频比例因子的分频值,都可以由看门狗控制器(WTCON)决定,预分频值的有效范围从0 到256-1.分频因子可以选择16,32,64 或者128. 看门狗定时器记数值的计算公式如下: t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ] 看门狗的定时周期为T=WTCH×t_watchdog 一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中.因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中. 调试环境下的看门狗当S3C2410A 用嵌入式ICE 调试的时候,看门狗定时器的复位功能不能启动,看门狗定时器能从CPU 内核信号判断出当前CPU 是否处于调试状态, 如果看门狗定时器确定当前模式是调试模式,尽管看门狗能产生溢出信号,但是仍然不会产生复位信号. 5,S3C2410A 相关寄存器 WTCON――看门狗定时器控制寄存器看门狗控制寄存器能够禁止或者允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出.如果用户想要使用看门狗作为普通时钟,应该中断使能,禁止看门狗定时器复位. WTDAT――看门狗定时器数据寄存器WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中. WTCNT――看门狗定时器计数寄存器WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT)的值不能自动装载到看门狗计数寄存器(WTCNT)中, 所以看门狗被允许之前应高初始化看门狗计数寄存器的值. 6,实验程序 由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路.要实现看门狗的功能,只需要对看门狗的寄存器组进行操作.即对看门狗的控制寄存器(WTCON) , 看门狗数据寄存器(WTDAT) ,看门狗计数寄存器(WTCNT)的操作. 设计流程如下: 设置看门狗中断操作, 包括全局中断和看门狗中断的使能, 看门狗中断向量的定义. 对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子,分频器的分 频值,中断使能和复位使能等. 对看门狗数据寄存器(WTDAT)和看门狗技术寄存器(WTCNT)的设置. 启动看门狗定时器. 6.1 主功能函数 int Main(void) { ChangeClockDivider(1,1); ChangeMPllValue(0xa1,0x3,0x1); Port_Init(); Uart_Select(0); Uart_Init(0,115200); Uart_Printf("watchdog test is beginning\n"); watchdog_test(); while(1); }

中断异常处理流程

计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。而中断则带有向处理器主动申请的意味。但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。若无特别说明,对“异常”和“中断”都不作严格的区分。本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。 1.异常中断响应和返回 系统运行时,异常可能会随时发生。当一个异常出现以后,ARM微处理器会执行以下几步操作: 1) 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。 2)将CPSR复制到相应的SPSR中。 3)根据异常类型,强制设置CPSR的运行模式位。 4) 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。 这些工作是由ARM内核完成的,不需要用户程序参与。异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: 1)将连接寄存器LR的值减去相应的偏移量后送到PC中。 2)将SPSR复制回CPSR中。 3) 若在进入异常处理时设置了中断禁止位,要在此清除。 这些工作必须由用户在中断处理函数中实现。为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。当异常处理完成以后,返回到主程序继续执行。可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。 2.异常处理程序设计 2.1 异常响应流程

MSP430F149的看门狗操作

MSP430F149的看门狗操作 1)看门狗的图解 图1 看门狗图解 2)看门狗介绍 看门狗由一个16位寄存器控制,高八位是密匙,密匙密码是05AH,读取是069H。MSP430F149的看门狗是系统默认开启的,所有一般不用的时候,程序一开始就关闭看门狗。看门狗有两种工作模式: 1.看门狗模式。 2.定时器模式。 3)看门狗的控制寄存器 1.WDTCTL ●WDTPW:高八位是密匙。一般IAR的头文件里面都包含有。 ●WDTHOLD:选择是否打开看门狗。0开1关。

●WDTNMIES:当复位端用作NMI(外部的非可屏蔽中断)的时候,选择是上升沿触 发中断还是下降沿触发中断。0上升1下降。 ●WDTNMI:选择复位端是作为复位端口还是NMI(外部的非可屏蔽中断)端口。0 复位1NMI。 ●WDTTMSEL:选择看门狗模式还是定时器模式。0看门狗1定时器。 ●WDTCNTCL:看门狗计数清零。1清零。 ●WDTSSEL:看门狗的时钟来源选择。0子系统时钟1主系统时钟。 ●WDTISx:看门狗时钟分频选择。 2.IE1 ●NIMIE:外部非可屏蔽中断使能。 ●WDTIE:看门狗中断使能。(当看门狗做定时器的时候也是这个使能) 3.IFG1(一般C语言不操作,都会有硬件置位) ●NMIIFG:外部非可屏蔽中断标志。 ●WDTIFG:看门狗中断标志。 4)当看门狗用作定时器使用的时候的操作。 1.把看门狗设置到定时器模式。(也还可以设置触发边沿,选择时钟和分频) 2.清零看门狗。 3.打开看门狗中断使能。 #include #define uint unsigned int void main() { WDTCTL=WDT_MDLY_32;//相当于WDTPW+WDTTMSEL+WDTCNTCL //也就是密匙+选择定时器模式+清零看门狗 IE1|=WDTIE;//打开看门狗中断使能,由于看门狗是非可屏蔽中断所有不用 //打开总中断IE while(1) { LPM3; } } #pragma vector=WDT_VECTOR

MSP430教程10:MSP430单片机WDT看门狗定时器解析

看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。程序中设置看门狗清零指令 WDTCTL=WDTPW+WDTCNTCL,当程序跑飞不能及时清零看门狗,导致看门狗溢出复位,这样程序可以恢复正常运行状态。 一、WDT寄存器包括WDTCNT和WDTCTL,两个寄存器在上电和系统复位内容全部清零 1.记数单元WDTCNT:WDTCNT是16位增记数器,由MSP430选定的时钟电路产生的固定周期脉冲信号对记数器进行加法记数。WDTCNT不能直接软件存取,必须通过看门狗定时器的控制寄存器WDTCTL来控制。 2.控制寄存器WDTCTL:WDTCTL由两部分组成,高8位用作口令,即5AH(头文件中定义为WDTPW),低8位是对WDT操作的控制命令。写入WDT控制命令时先写入口令WD TPW,口令写错将导致系统复位。读WDTCTL时不需口令,低字节WDTCTL的值,高字节读出始终为69H。 bit 15-8 7 6 5 4 3 2 1 0 口令HOLD NMIES NMI TMSE L CNTCL SSEL IS1 IS0 IS1 SI0 选择看门狗定时器的定时输出,T为WDTCNT的输入时钟源周期。 TMSEL W DT工作模式选择 0 0 T*2的15次 方 0 看门狗模式 0 1 T*2的13次

方 1 定时器模式 1 0 T*2的9次 方 NMI 选择RST/NMI 引脚功能 1 1 T*2的6次 方 RST/NMI为复位端 SSEL 选择WDTCNT的时钟 源 1 RST/NMI为非屏蔽中断输入 0 SMCL K 1 ACLK NMIES 选择NMI中断的边沿触发方 式 HOLD 停止看门狗定时器工作 0 上升沿触发NMI中 断 0 看门狗功能激活 1 下降沿触发NMI中 断 1 时钟禁止输入,记数停止

C51单片机看门狗电路及程序设计方案

C51单片机看门狗电路及 程序设计案 院系:信息工程学院 年级:2010级 电子一班禹豪 电子一班训虎 电子二班邓启新 一、引言 在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog) (1)看门狗电路基本原理 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 *此处设计原理实际上为下文中硬件看门狗设计思路。

(2)看门狗电路一般设计式 “看门狗”电路一般分为硬件看门狗与软件看门狗两种设计式。 硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等. 软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的法实现(即利用单片机部定时器资源,通过编程模拟硬件看门狗工作式),以51系列为例:因在51单片机中有两个定时器,在利用部定时器资源来对主程序的运行进行监控时。可以对T1(或T0)设定一定的定时时间(设定的定时值要小于主程序的运行时间),当产生定时中断的时候对一个变量进行赋值(此变量在主程序运行的开始已有一个初值)。当主程序运行至最后时对此变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。 考虑到设计要求,本设计采用软件看门狗设计思路。 二、看门狗电路整体设计思路 根据设计要求,本设计利用C51单片机部自带的定时器1进行编程,并配合少量电路实现“看门狗“电路功能。整个设计分为软件部分与硬件部分,如下: (1)软件部分设计原理: 软件设计分为三部分:“看门狗“定时器设置程序、溢出中断服务程序和喂狗代码。 1.1设计思路: 1)在主程序开头,“看门狗“定时器设置程序设置定时器1计时50ms。 2)当定时达50ms时,定时器1产生溢出中断,溢出中断服务程序开始工作,将看门狗标志num加1。当num的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。 3)在此过程中,喂狗代码将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。 注:喂狗代码放置位置可根据num预计数值进行调整:当num门限值较小,即看门狗计数时间较短时,喂狗代码可放于程序中各循环体之后或均匀分布于整个主程序中。当num门限值较大,即看门狗计数时间较长时,喂狗代码可放于程序主循环体末尾。但是需注意看门狗计数时间必须长于正常工作时间,以免非正常复位。 1.2软件设计流程图:

S3C2410触摸屏驱动程序原理图

S3C2410触摸屏驱动程序原理图 本文介绍了基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏控制器芯片完成触摸屏模块的设计。具体包括在嵌入式Linux操作系统中的软件驱动开发,采用内核定时器的下半部机制进行了触摸屏硬件中断程序设计,采用16个时钟周期的坐标转换时序,实现触摸点数据采集的方法,给出了坐标采集的流程。设计完成的触摸屏驱动程序在博创公司教学实验设备UP-NETARM2410-S平台上运行效果良好。 引言 随着信息家电和通讯设备的普及,作为与用户交互的终端媒介,触摸屏在生活中得到广泛的应用。如何在系统中集成触摸屏模块以及在嵌入式操作系统中实现其驱动程序,都成为嵌入式系统设计者需要考虑的问题。本文主要介绍在三星S3C2410X微处理器的硬件平台上进行基于嵌入式Linux的触摸屏驱动程序设计。 硬件实现方案 SPI接口是Motorola推出的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏接口的ARM920T内核芯片,ADS7843为Burr-Brown生产的一款性能优异的触摸屏控制器。本文采用SPI接口的触摸屏控制器ADS7843外接四线电阻式触摸屏,这种方式最显著的特点是响应速度更快、灵敏度更高,微处理器与触摸屏控制器间的通讯时间大大减少,提高了微处理器的效率。ADS7843与S3C2410的硬件连接如图1所示,鉴于ADS7843差分工作模式的优点,在硬件电路中将其配置为差分模式。 图1触摸屏输入系统示意图 嵌入式Linux系统下的驱动程序 设备驱动程序是Linux内核的重要组成部分,控制了操作系统和硬件设备之间的交互。Linux 的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,成为设备文件。应用程序可以打开、关闭、读写这些设备文件,对设备的操作就像操作普通的数据文

ARM异常中断机制.

ARM9(以S3C2410为例)中断机制 一、ARM异常机制介绍 ARM9处理器有7种工作模式。分别是(除了用户模式其他都是异常模式 用户模式(usr:ARM处理器正常的程序执行状态。 快速中断模式(fiq:用于高速数据传输或通道处理。 外部中断模式(irq:用于通用的中断处理。 管理模式(svc:操作系统使用的保护模式。 数据访问终止模式(abt:当数据或指令预取终止时进入该模式。 系统模式(sys:运行具有特权的操作系统任务。 未定义指令中止模式(und:当未定义的指令执行时进入该模式。 每种模式通过5位二进制编码进行标示: 用户模式10000 快速中断模式10001 外部中断模式10010 管理模式10011 数据访问终止模式10111 未定义指令中止模式11011 系统模式11111 模式编码存放在CPSR(程序当前状态寄存器,记录当前工作模式的编码的值)中的[4:0]。

快速中断模式、外部中断模式、数据访问终止模式、未定义指令中止模式、管理模式称为异常模式。 异常类型具体含义 复位当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。 未定义指令遇到不能处理的指令时,产生未定义指令异常。 软件中断该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。 指令预取中止若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。 数据中止若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。 IRQ(外部中断请求)当处理器的外部中断请求引脚有效,且CPSR中的I 位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务。 FIQ(快速中断请求)当处理器的快速中断请求引脚有效,且CPSR中的F 位为0时,产生FIQ异常。 当多个异常发生时,处理器根据优先级进行处理。优先级

S3C2410中文手册第7章_时钟和功率管理

第七章时钟和功率管理 概述 时钟和功率管理模块由三部分组成:时钟控制,USB控制和功率控制。 S3C2410A的时钟控制逻辑能够产生系统所需要的时钟,包括CPU的FCLK,AHB总线接口的HCLK,和APB总线接口的PCLK。S3C2410A有两个PLL,一个用于FCLK,HCLK,PCLK,另一个用于USB模块(48MHZ)。时钟控制逻辑能够由软件控制不将PLL连接到各接口模块以降低处理器时钟频率,从而降低功耗。 S3C2410A有各种针对不同任务提供的最佳功率管理策略,功率管理模块能够使系统工作在如下4种模式:正常模式,低速模式,空闲模式和掉电模式。 正常模式:功率管理模块向CPU和所有外设提供时钟。这种模式下,当所有外设都开启时,系统功耗将达到最大。用户可以通过软件控制各种外设的开关。例如,如果不需要定时器,用户可以将定时器时钟断开以降低功耗。 低速模式:没有PLL的模式。与正常模式不同,低速模式直接使用外部时钟(XTIpll或者EXTCLK)作为FCLK,这种模式下,功耗仅由外部时钟决定。 空闲模式:功率管理模块仅关掉FCLK,而继续提供时钟给其他外设。空闲模式可以减少由于CPU核心产生的功耗。任何中断请求都可以将CPU从中断模式唤醒。 掉电模式:功率管理模块断开内部电源。因此CPU和除唤醒逻辑单元以外的外设都不会产生功耗。要执行掉电模式需要有两个独立的电源,其中一个给唤醒逻辑单元供电,另一个给包括CPU在内的其他模块供电。在掉电模式下,第二个电源将被关掉。掉电模式可以由外部中断EINT[15:0]或RTC唤醒。 功能描述 时钟结构 图7-1描述了时钟架构的方块图。主时钟源由一个外部晶振或者外部时钟产生。时钟发生器包括连接到一个外部晶振的振荡器和两个PLL(MPLL和UPLL)用于产生系统所需的高频时钟。 时钟源选择 表7-1描述了模式控制引脚(OM3和OM2)和选择时钟源之间的对应关系。OM[3:2]的状态由OM3和OM2引脚的状态在nRESET的上升沿锁存得到。 注意:1、尽管MPLL在系统复位的时候就开始产生,但是只有有效的设置号

S3C2410中断分析

S3C2410中断分析 具体详细解释 这段来自: https://www.doczj.com/doc/bd6712043.html,/ghy0504/blog/item/db90649a0f554bbfc8eaf47a.html https://www.doczj.com/doc/bd6712043.html,/renpine/archive/2009/10/04/4631854.aspx 具体写的很详细,后面画个图对流程进行详细解释,方便自己查阅,并结合wince里面底层中断的代码分析下。 S3C2410有24个外部中断引脚:EINT0~EINT23,但是对于EINT0~EINT3这4个外部中断而言,使用比较简单;对于其它20个而言,使用稍稍复杂一些。 首先,来看S3C2410的中断控制器,有6个中断裁决器分为2级,第1级5个,第2级1个。第1级的5个裁决器管理32个中断源,在这32个中断源中有2个是保留的,24个是给内部中断源的,而外部中断只给了6个中断:EINT0、EINT1、EINT2、EINT3、EINT4~7、EINT8~23。EINT4~EINT7、EINT8~EINT23都是共享一个中断。 中断控制器中主要的相关寄存器有:INTMSK、SRCPND、PRIORITY、INTPND,还有一个INTMOD。但是对于外部中断还有几个寄存器:EXTINTn、EINTMSK、EINTPEND等。 对于外部中断EINT0~EINT3由于没有共享,因此外部寄存器中只有EXTINT0和它们有关,进行中断触发电平信号的设置。 但是对于其他的20个外部中断而言,所有上面提到的寄存器都有关系。实际上对于 EINT4~EINT23,实际上可以看作有3级屏蔽,第1级屏蔽是CPSR中的I-Bit和F-Bit,第2级屏蔽是EINTMASK([4:23]每一位对应一个相应的外部中断),第3级屏蔽是INTMSK(Bit4、Bit5);对于EINT0~EINT3而言,只是INTMSK中的Bit0~Bit3,因此在变成初始化时应该要特别注意。 在外部中断有中断请求时,由于EINT4~7、EINT8~23分别共享中断,因此在SRCPND 中分别对应Bit4、Bit5,最终导致INTPND中的相应位置1(在任何时刻只能有一个位置1),但是如何分辨这些共享的中断?可以通过查询EINTPEND来进行(Bit4~Bit23分别对应1个外部中断)。由于在相应中断后在服务例程中应将挂起寄存器中相应的位清0来清除未处理状态,因此对于EINT4~7、EINT8~23这20个外部中断的清除挂起寄存器的顺序是: 1. EINTPEND(可能多位同事为1),方法:向要清0的位写1,其它位写0,但要注意由于第4位保留,因此不要试图向第4位写1,可能会导致不可预料的结果。 2.SRCPND(可能多位同时为1),方法:向要清0的位写1,其它位写0。 3.INTPND,方法:向其写本身的数据(即INTPND=INTPND)。

看门狗实验预习报告

实验8 看门狗实验 一、实验项目 1、利用watchdog产生定时中断,起定时器作用; 2、编程实现喂狗、看门狗和重启系统。 二、实验类型 验证性。 三、计划学时 2学时。 四、实验目的 1、了解watchdog的作用; 2、掌握lpc2103的watchdog定时器的使用方法。 五、实验设备与平台 1、实验设备:计算机(PC),ARM9-2410EP增强型嵌入式教学实验系统,Multi-ICE仿真器。 2、平台:Windows、ADS1.2。 六、涉及的知识点 定时器的使用方法,看门狗的作用以及使用方法。 七、实验相关知识 看门狗功能简述: 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 看门狗的工作原理: 设系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti。在程序正常运行时,Ti>Tp,看门狗的定时器就不会溢出;若由于干扰等原因使系统不能在Tp时刻内修改看门狗定时器的记数器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 S3C2410A的看门狗简介: S3C2410A的看门狗定时器有两个功能: 1、作为常规时钟,并且可以产生中断;

2、作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周 期的复位信号。 主要特性如下: 通用的中断方式的16bit定时器; 当计数器减到0(发生溢出),产生128个PCLK周期的复位信号。 下图为看门狗的电路示意图,看门狗时钟使用PCLK作为它的时钟源,PCLK通过预分频产生适合的看门狗时钟。 图5.1 Watchdog定时器框图 八、实验内容与步骤 1.实验说明 由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门 狗的功能,只需对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看 门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。 设计流程如下: *设置看门狗中断操作,包括全局中断和看门狗中断的使能,看门狗中断向量的定义。 *对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子、分频器的分频值、 中断使能和复位使能等。 *对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置。 *启动看门狗定时器。 2.看门狗复位功能实验步骤 (1)创建一个工程SHY5_WATCHDOG_1; (2)将“实验程序文档/Include/”目录下的8个头文件2410lib.h 2410slib.h 2410addr.h def.h

看门狗cop模块

看门狗模块(COP) (1) 第一节看门狗COP简介 (1) 第二节看门狗模块相关寄存器 (1) 2.1看门狗设置存器COPCTL (1) 第三节看门狗模块应用实例 (2) 看门狗模块(COP) 第一节看门狗COP简介 看门狗模块用于检测程序的正常运行,启动看门狗后,必须在看门狗复位之前向ARMCOP 中依次写入0X55和0XAA ,这样看门狗就会重新启动计时。当用户程序跑飞时在规定时间内没有向ARMCOP中依次写入0X55和0XAA的操作,就会引起看门狗复位,看门狗产生一个强制系统复位。这样可以使程序重新运行,减小程序跑死的危害。 第二节看门狗模块相关寄存器 2.1看门狗设置存器COPCTL WCOP看门狗喂狗模式设定位 WCOP=1,则看门狗行运在窗口模式下,必须在看门狗周期的后25%时间内向ARMCOP依次写入0X55和0XAA。若在其他时间写入,或写入其他值,都会让看门狗溢出,使单片机复位。 WCOP=0 则看门狗运行在正常模式下。当看门狗使能后,只要在看门狗溢出周期内依次向ARMCOP写入0X55和0XAA,使看门狗计数复零,即可。 RSBCK,BDM模式下的COP和RTI 停止位。若COPCTL_RSBCK=1,则只要进入BDM模式,就停止COP和RTI(实时中断)计数。若COPCTL_RSBCK=0,则在BDM模式下允许COP 和RTI运行。 CR2、CR1、CR0。这三位是看门狗时钟分频位。当CR[2:0]=000时,看门狗COP不可用。

只要CR[2:0]不为000,看门狗就开启了。当CR[2:0]=001时,分频值为(2的14次方)。当CR[2:0]=010时,分频值为(2的16次方)。当CR[2:0]=011时,分频值为(2的18次方)。当CR[2:0]=100时,分频值为(2的20次方)。当CR[2:0]=101时,分频值为(2的22次方)。当CR[2:0]=110时,分频值为(2的23次方)。当CR[2:0]=111时,分频值为(2的24次方)。 看门狗的溢出频率为:COP溢出频率=OSCCLK / CR[2:0]。OSCCLK为晶振频率 第三节看门狗模块应用实例 /******************************************** 龙丘MC9S12XS128多功能开发板 Designed by Chiu Sir E-mail:chiusir@https://www.doczj.com/doc/bd6712043.html, 软件版本:V1.2 最后更新:2011年4月5日 相关信息参考下列地址: 网站: https://www.doczj.com/doc/bd6712043.html, 淘宝店:https://www.doczj.com/doc/bd6712043.html, ------------------------------------ Code Warrior 5.0 Target : MC9S12XS128 Crystal: 16.000Mhz busclock:8.000MHz **********************************************/ #include //工程通用的宏文件 #include "derivative.h" //单片机硬件型号文件 #define LED PORTB //定义连接发光二级管的PORTB口数据寄存 //为LED,写'0'亮,写'1' 灭 #define LED_dir DDRB //定义连接发光二级管的PORTB诜较蚣拇嫫? //为LEDCPU_dir,写'0'做输入口,写'1'做输出口

内部与外部看门狗定时器的比较

内部与外部看门狗定时器的比较 摘要:本文对内部(集成在处理器内部)看门狗定时器(WTD)与外部(基于硬件) WDT的优势和劣势进行了对比。内部看门狗便于设计,但容易失效。MAXQ2000微控制器的WDT可以作为内部看门狗的一个例子。基于硬件的看门狗定时器需要占用额外的电路板空间,但在对于可靠性要求较高的设计中确实不可或缺的。本文给出了一个对照表,总结了每种WDT方案的优缺点。 引言 看门狗定时器(WDT)在出现无效的软件运行状态时用来强行复位(硬件复位)嵌入式微处理器或微控制器,失效状态可以是简单地触发寄存器的某一位,或者是射线干扰或EMI (电磁辐射)。 本文介绍了一些针对具体应用选择最佳定时器的考虑。 WDT的典型应用 防止微处理器闭锁是WDT的一个典型应用,通常,嵌入式软件有一个“主循环”程序,用其调用子程序以实现不同的任务。每次程序循环对WDT进行一次复位,如果任何原因造成程序循环操作失败,看门狗定时器则发生超时,对器件进行复位。 具有WDT功能的系统非常适合检测误码,中断(包括存储器故障,EMI对存储器或接口放电)可能导致临时性的误码。这些误码会导致处理器输入、输出数据的极性翻转,当误码没引入到程序信息中时,微处理器将会执行错误的代码。很有可能造成处理器开始执行操作数,而非操作代码。程序开始执行这种错误代码时,将造成程序运行不正常,无法提供看门狗清零信号,从而导致处理器复位。合理的系统设计能够在复位后恢复系统的正常运行。 需要注意的是,WDT不能检测瞬态故障,按照定义,只有在WDT计数器达到预定的时间间隔时才会复位处理器。正是这一原因,需要选择一个最短超时周期,以便在系统失控之前由WDT产生复位,使系统恢复正常工作。 内部和外部WDT WDT可以内置于微处理器,例如:MAXQ2000微控制器;也可以是一个独立的IC (外部WDT),或作为支持ASIC的一部分。无论是内部WDT,还是外部WDT,各有其优缺点。内部定时器有助于节省成本,但容易受程序运行失效的影响。相对成本较高的外部WDT具有一个独立的时钟源,能够提供更高的可靠性;经过适当配置,外部WDT不会受程序失效的影响。 WDT的基本原理 WDT的核心电路是计数寄存器,时钟源连续递增计数寄存器的值,计数器发生溢出时,看门狗逻辑电路强制系统复位。为防止复位,必须周期性地将计数寄存器清零,称其为“喂

驱动-异常处理结构、中断处理结构

一,Linux 异常处理体系结构框架: 1,按键按下时。 强制的跳到异常向量处执行(中断是异常的一种)。 2,CPU 发生中断。 3,“入口函数”是一条跳转指令。跳到某个函数:(作用) 将2440 作为单片机使用时:裸机程序时 ②,执行中断处理函数。 ③,恢复被中断的现场。 ①,保存被中断处的现场(各种寄存器的值)。 LINUX 中处理中断的过程: 1,写程序时先设置异常入口: 发生“中断”时,就跳到0x18 地址处,跳转到“HandleIRQ”是执行下面的指令: 中断处理完后,要返回去继续执行之前被中断的那个程序。 保存寄存器就是保存中断前那个程序的所用到的寄存器。 然后是处理中断,最后是恢复。 linux 中: 异常向量在哪里: LINUX 异常处理结构、中断处理结构: 2012年2月23日 11:03

①,LINUX的异常向量在哪里: ARM架构的CPU的异常向量基址可以是 0x0000 0000,也可以是 0xffff0000,LINUX内核 使用后者,只需要在某个寄存器里设置下,就可以将异常基址定位到这里来。这个地址并不代表实际的内存,是虚拟地址。当建立了虚拟地址与物理地址间的映射后,得将那些异常向量,即相当于把那些跳转指令(如:HandleSWI 等)复制拷贝到这个 0xffff0000这个地址处去。(“那些跳转指令”是指head.S中那些跳转)。 这个过程是在trap_init这个函数里做。 trap_init函数将异常向量复制到0xffff0000处,部分代码如下: 如上: 将 __vectors_start, __vectors_end -__vectors_start 这段代码拷贝到 vectors来。

S3C2410中文手册第7章_时钟及电源管理模块

第七章时钟及电源管理模块 时钟电源管理模块包含了3部分:Clock控制、USB控制、POWER控制. 时钟控制逻辑单元能够产生s3c2440需要的时钟信号,包括CPU使用的主频FCLK,AHB总线设备使用的HCLK,以及APB总线设备使用的PCLK.2440内部有2个PLL(锁相环):一个对应FCLK、HCLK、PCLK,另外一个对应的是USB使用(48MHz)。时钟控制逻辑单元可以在不使用PLL情况下降低时钟CLOCK的频率,并且可以通过软件来驱使时钟和各个模块的连接/断开,以减少电源消耗。 对于电源控制逻辑单元,2440有许多钟电源管理方案来针对所给的任务保持最优的电源消耗。S3c2440中的电源管理模块对应4种模式:NORMAL模式、SLOW模式,IDLE模式,SLEEP 模式。 NORMAL模式:这个模块给CPU时钟以及2440相应的外围设备提供时钟。这个模式下,当所有的外围设备都被打开,电源消耗被最大化。它允许用户通过软件来控制外部设备的操作。例如,如果一个定时器不需要时,那么用户可以通过CLKCON寄存器来关闭时钟和定时器的连接,来降低电源消耗。 SLOW模式:NON-PLL模式,不同于Normal模式,这个模式使用的一个外部时钟(XTlpll 或EXTCLK)来直接作为2440的主频FCLK,而没有使用PLL。在这个模式下,电源的消耗仅依赖于外部时钟频率,电源同PLL有关的消耗可以被排除。 IDLE模式:这个模式下CPU的时钟FCLK被断开,而还继续提供其他外围设备的时钟。因此空闲模式导致减少了CPU核相应的电源消耗。任何中断请求都能够将CPU唤醒。 Sleep模式:这个模式断开了内部电源。因此在这个模式下CPU&内部的逻辑单元都没有电源消耗,除了一个wake-up逻辑单元。激活sleep模式需要2个独立的电源。一个给wake-up逻辑模块提供电源,另外一个给内部逻辑包括CPU提供电源,并且其是对于power on/off可控的。在Sleep模式,提供给内部逻辑&CPU的电源模块将被关闭,而从Sleep 模式唤醒可以通过EINT[15:0]&RTC中断来引发。 7.1功能描述 7.1.1时钟结构 如图7-1所示时钟结构模块图。主时钟源来自外部晶振(XTIPLL)或者是外部时钟(EXTCLK).时钟生成器包含了一个振荡器(振荡放大器),其连接外部晶振,并且还有2个PLL,可以产生满足s3c2440所需的高频时钟。

dsp看门狗定时器

看门狗定时器 看门狗在外围监控DSP中软件的运行以及硬件的操作,当CPU出现故障时,看门狗将执行系统复位。如果软件进入了一个不正确的循环或者CPU出现暂时的混乱,看门狗定时器将出现溢出来使系统复位。 在大多数情况下,DSP短暂的混乱以及CPU不正确的操作都可以被看门狗所清除并重新进行设置。由于看门狗稳定的性能,其增加了CPU的可靠性,以确保系统的完整。 在看门狗中这个外围设备中,所有的寄存器都是8位的,连接到16位CPU的低8位外围数据总线上。 240XA看门狗定时器和C240看门狗定时器唯一的区别就是其缺乏实时的中断能力。(这句话我也不明白哦)。 看门狗定时器将通过对从CPU出来的CLKOUT进行分频而得到自己所需的时钟。 1.1看门狗定时器的特征 看门狗模块包含如下特征: n8位的看门狗计数器通过计数溢出从而使系统复位 n6位的独立运行计数器通过对看门狗计数器预定标来feed看门狗计数器(上句为字面意思,我的理解是:该6位的独立运行的计数器通过对 WD CLK(看门狗工作时钟)进行分频从而使看门狗计数器得到不同频率 的时钟。独立运行的意思是该计数器不受其他器件的影响,只要启动 系统,就开始工作) n看门狗复位键寄存器,当向该寄存器写下合适的组合值(在该DSP中,通过向该寄存器相继写55h和AAh值)时,该寄存器将使看门狗计数 器清零,当向该寄存器写下不合适的组合值(除55h和AAh以外的值) 时,该寄存器将使系统复位 n看门狗核对位,当看门狗定时器出现错误情况时,通过看门狗核对位来复位系统 n当系统复位时,将自动启动看门狗定时器 n可对独立运行计数器输出的6路分频信号进行选择 以下为看门狗定时器的功能框图 +含义:向WDCR.5-3位(看门狗核对位)写除101以外的任何数将导致系统复位。含义:分频后的值与WDCLK有关。 1.1看门狗定时器的操作 1.1.1概述 看门狗的操作由三个寄存器进行控制 n看门狗计数寄存器(WDCNTR)——这个寄存器包含了看门狗计数器的值 n看门狗键位寄存器(WDKEY)——当向该寄存器先写55h,然后写AAh时,该寄存器将WDCNTR清零 n看门狗控制寄存器(WDCR)——该寄存器包含了用于看门狗配置的如下控制位 2看门狗禁止位 2看门狗标志位

第十八章看门狗定时器

第十八章看门狗定时器 概述 S3C2410的看门狗定时器用于当系统被噪声或系统错误等故障打断时返回控制器操作状态。它可以用作一个普通的16位内部定时器来请求中断。WDT产生一个128个PCLK周期的复位信号。 特性 —具有中断请求的正常内部定时器模式 —当定时器计数值到达0时产生一个128个PCLK周期的内部复位信号 看门狗定时器操作 图18-1描述了WDT的功能方框图。WDT只使用PCLK作为其时钟源。PCLK 频率经过预定标器,然后再进行分频产生相应的WDT时钟。 预定标器的值和分频因数在WDT控制寄存器WTCON中指定,有效的预定标器的值在0-(2的8次方-1)之间,分频因数可选为16、32、64、128。 使用下式计算WDT频率和每个定时器时钟周期的容差 t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor ) WTDAT和WTCNT 一旦WDT使能,WTDAT寄存器的值不能自动加载进WTCNT,因此必须在WDT启动前向WTCNT写入初始值。 调试环境的考虑 当S3C2410在使用嵌入式ICE调试模式时,WDT将自动关闭。 WDT可以通过CPU核心信号--DBGACK判断当前是否处于调试模式,一旦DBGACK信号被断言,WDT的复位输出将会无效,因为看门狗被中止工作。

WDT控制寄存器WTCON WTCON寄存器允许使能/禁止WDT、选择4个不同的时钟信号源、使能/禁止中断、使能/禁止WDT输出。 WDT用于从故障后复位CPU,如果不需要复位,则应该禁止WDT。 如果希望将WDT用作普通定时器,使能中断并关闭看门狗。 WDT数据寄存器WTDAT WTDAT寄存器中的值指定溢出的时间。它不会在初始化WDT时自动加载到WTCNT中,但是用0x8000(初始值)将导致第一次溢出。这种情况下,WTDAT的值将自动加载到WTCNT中。 WDT计数寄存器 WTCNT显示WDT的当前值。注意WTDAT的值不会在初始化WDT使能时自动加载到WTCNT中,因此在使能WDT前必须手动设置WTCNT的初始值。

如何设计看门狗(硬件看门狗与软件看门狗)

看门狗电路的概念和作用 2007/08/05 15:26 一般看门狗电路用来监视MCU内部程序运行状态,在程序跑飞或死锁情况下,可以自动复位。不过由于厂家、型号不同可能有些差别。 看门狗电路的工作原理是:当系统工作正常时,CPU将每隔一定时间输出一个脉冲给看门狗,即“喂狗”,若程序运行出现问题或硬件出现故障时而无法按时“喂狗”时,看门狗电路将迫使系统自动复位而重新运行程序。主要作用是防止程序跑飞或死锁 看门狗电路其实是一个独立的定时器,有一个定时器控制寄存器,可以设定时间(开狗),到达时间后要置位(喂狗),如果没有的话,就认为是程序跑飞,就会发出RESET指令 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗" 看门狗电路电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位. 看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

基于S3C2410的流水灯控制系统

电气与信息工程学院《嵌入式系统工程训练》说明书 题目:基于S3C2410的流水灯控制系统 作者: 专业班级: 指导教师:陈佳泉 职称:讲师 2017年1月13日

摘要 随着社会的发展,嵌入式在未来的应用会越来越广泛。随着物联网的时代到来,电器将会与互联网,移动电话成为一体。本实训项目是以嵌入式系统为目标的一次平台操作。所谓嵌入式系统就是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,实用于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。ARM嵌入式芯片是一种高性能、低功耗的RISC芯片,世界上几乎所有的主要半导体生产商都生产基于ARM体系机构的通用芯片,且基于ARM内核的嵌入式处理器已经成为市场主流。而且Linux是免费发行的、快速高效的操作系统,在过去的几年中,基于开源组织的Linux嵌入式操作系统得到了长远的发展。嵌入式Linux是按照嵌入式操作系统的要求设计的一种小型操作系统。由一个内核以及一些根据需要进行定制的系统模块组成。其内核很小,一般只有几百KB,即使加上其他必要的模块和应用程序,所需的存储空间也很小。非常适合于移植到嵌入式系统中去,同时它还具有多任务多进程的系统特征。 本次设计以基于嵌入式的简单的流水灯的设计。我们综合应用ARM嵌入式系统设计的相关专知识,搭建了一个基于S3C2410的硬件平台,在平台上编写出一个完整的流水灯控制功能的软件。通过这次的课程设计,使我们基本了解了嵌入式的方法以及培养我们对嵌入式编程的兴趣,与此同时,我们还可以回顾一下C 的编程和汇编编程的基础。并通过这个典型的嵌入式系统项目的设计与开发学习嵌入式系统的设计与开发流程。为将来在嵌入式的学习和工作中做好准备。 关键词:流水灯,嵌入式,C 编程 Water lamp,Embedded,C programming

相关主题
文本预览
相关文档 最新文档