看门狗cop模块
- 格式:doc
- 大小:48.00 KB
- 文档页数:3
飞思卡尔应用笔记AN3476洗衣机的三相交流感应电机直接矢量控制方案——基于MCF56F8013文件编号:AN3476版本:1,08/2007苏州大学飞思卡尔嵌入式教学与应用培训中心译2008年5月目录1 应用特性 (1)1.1 Freescale控制器的优势和特点 (3)2 交流感应电机的矢量控制 (4)3 矢量控制算法概述 (7)3.1 转子磁通的估算 (9)3.2 自适应电路 (10)3.3 定子电压的解耦 (11)3.4 空间矢量调制 (12)3.5 电流控制回路 (14)3.6 三相电流的重构 (15)3.7 弱磁控制模块 (17)3.8 利用转速传感器的速度感应 (17)3.8.1 利用转速传感器和外部硬件比较器的速度感应 (17)3.8.2 利用转速传感器和软件比较器的速度感应 (18)3.9 速度控制回路 (19)4 洗衣机算法 (20)4.1滚动洗涤循环 (21)4.2 失衡检测 (21)4.3 脱水循环 (21)5 软件设计 (22)5.1 应用程序流程图 (22)5.2 应用程序状态图 (23)6 用户控制接口 (24)6.1 FreeMaster控制界面 (24)7 洗衣机驱动参数的调整 (26)8 飞思卡尔半导体公司的技术支持 (27)9 参考文献 (27)10 术语表 (28)洗衣机的三相交流感应电机直接矢量控制方案——基于MCF56F8013Pavel Sustek, Petr SteklFreescale半导体公司洗衣机设计上的最新趋势是用新型的、电子控制的无刷驱动器取代传统的驱动系统。
过去,洗衣机的设计主要借助于两个广泛应用的驱动系统。
较早的设计采用机电控制的双速单相交流感应电机。
这种驱动系统在新的机器中已经不再使用,而仅在最廉价的机型中还有些应用。
之后,绝大多数洗衣机都采用晶闸管(TRIAC)控制的通用型有刷电机。
然而,随着新电子器件的出现,这些驱动系统正在逐渐被淘汰。
中文译文第1章器件概述S12XS-系列1.1简介新S12XS家族16位微控制器是S12XE家族的兼容,简化版本。
这些家庭提供了一种简单的方法来制定共同的平台,从低端到高端应用程序,最大限度地减少软件和硬件的重新设计。
针对通用汽车的应用和CAN节点,这些应用的一些典型的例子分别是:车身控制器,乘员检测,车门模块,RKE接收器,智能执行器,照明模块和智能接线盒以及很多其他。
该S12XS家族保留了许多S12XE家族包括纠错码的功能(ECC)的快闪记忆体,一个独立的数据闪存模块的代码或数据的存储,一个调频锁相环(IPLL),提高了EMC性能和快速的ATD转换器S12XS家族将提供32位的性能与16位MCU的所有优势和效率。
它将保留低成本,目前享有的功耗,EMCand代码大小效率优势由飞思卡尔现有的16位S12和S12X MCU系列的用户。
像其他S12X成员家庭,S12XS家庭将运行16 - bit宽访问无需等待状态的所有外设和回忆。
该S12XS家庭将可在112引脚LQFP ,80引脚QFP ,64引脚LQFP封装选项和保持与S12XE家族针兼容性的高水平。
除了在现有的I / O端口每个模块,多达18个进一步的I / O端口,可与中断功能,允许唤醒从停止或等待模式。
外设集包括MSCAN ,SPI,2个SCI,可,一个8通道24位周期中断定时器,8 - 通道的16位定时器,8通道PWM和多达16 - 通道12位ATD转换器。
软件控制外设到端口的路由可以访问外设模块的灵活组合在较低的引脚数封装选项。
1.1.1特点在S12XS-系列的特性都在这里列出。
请参阅表D-1对于内存选项和表D-2外设功能,可在不同的家庭成员。
•16位CPU12X- 向上与S12指令集除了五个模糊的指令兼容(MEM,W A V,W A VR,REV,REVW),它已被删除-增强的变址寻址-- 访问大数据段独立PPAGE的-•INT(中断模块)-- 七个级别的嵌套中断-- 中断源到每个灵活分配中断级。
锁相环配置时钟锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。
下面记一下怎样配置锁相环来设定想要的系统时钟。
锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG中的模块,固前面用到的寄存器,这里有些会再用到。
在程序中配置锁相环的步骤如下:第一、禁止总中断;第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK为外部晶振频率)。
CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。
第三、禁止锁相环PLL,即PLLCTL_PLLON=0。
当PLLCTL_PLLON=0时,关闭PLL电路。
当PLLCTL_PLLON=1时,打开PLL电路。
第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。
SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV 分别为寄存器SYNR、REFDV中的值。
这两个寄存器只有在PLLSEL=0时才能够写入(这里就是第二步的设置原因所在了)。
第五、打开PLL,即PLLCTL_PLLON=1。
第六、CRGFLG_LOCK位,确定PLL是否稳定。
当锁相环PLL电路输出的频率达到目标频率的足够小的误差范围内时,LOCK位置1,此时说明PLLCLK已经稳定,可以作为系统的时钟了。
该位在正常情况下为只读位。
第七、PLLCLK稳定后,允许锁相环时钟源PLLCLK为系统提供时钟,即CLKSEL_PLLSEL=1。
第六章复位和启动6.1 简介MCU支持的复位源有:表6-1 复位源除了EzPort和MDM-AP复位之外,每个系统复位源在系统复位状态寄存器(SRSH和SRSL)都有相应的位。
详见模式控制器一章。
EZP_引脚决定的功能模式下选择单片(默认)模式或串行flash编程MCU在CS(EzPort)模式而退出复位状态。
详见启动选项。
6.2 复位此部分讨论基本的复位机制和复位源。
一些引发复位的模块可以配置为触发中断。
参见各独立外设章节获取更多信息。
6.2.1 上电复位(POR)当给MCU上电或提供的电压低于上电复位重置电压(V POR)时,POR电路会触发POR 复位。
当电压升高时,LVD电路保持MCU处于复位状态直到电压大于LVD低电压阈值(V LVDL)。
POR复位后SRSL寄存器的POR和LVD位亦重设。
6.2.2 系统复位MCU复位是一种可以使芯片回到初始状态的方法。
系统复位起始于全面监管的片上调节器和来自于内部参考的系统时钟发生器。
当芯片退出复位时,它按如下顺序操作:·从中断向量表0偏移开始读取开始SP(SP_main)·从中断向量表4偏移开始读取PC·LR设置为0xFFFF_FFFF片上外设模块和非模拟IO引脚最初都被置为禁止。
复位之后模拟引脚被默认为相应的模拟功能。
复位时,JTAG相应的输入引脚被配置为:·TDI上拉(PU)·TCK下拉(PD)·TMS上拉相应的输出引脚被配置为:TDO既不上拉也不下拉注意到nTRST初始被配置为禁止的,然而一旦被配置为JTAG功能时,它的相应输入引脚被配置为:·nTRST上拉6.2.2.1 外部引脚复位(PIN)RESET是一个专用引脚。
该引脚开漏和内部上拉。
RESET将芯片从任何模式唤醒。
在该引脚复位时,SRSL[PIN]被置位。
6.2.2.1.1复位引脚过滤RESET引脚在所有的模式中都支持数字过滤。
目前接触到的单片机中都有看门狗模块,不过写过的程序也比较简单,程序能够稳定运行,所以就不怎么理会这看门狗,因此也不知道看门狗是怎么回事。
DABAO最近写了个超声波测距的程序,运行过程中程序老是会无故停止,就是死机了。
因此不得不重新面对看门狗,经过两天的奋斗,终于让看门狗顺利工作了。
下面记一下XS128的看门狗的相关寄存器及用法。
看门狗模块用于检测程序的正常运行,启动看门狗后,必须在看门狗复位之前向ARMCOP中依次写入0X55和0XAA ,这样看门狗就会重新启动计时。
如果在规定时间内没有完成向ARMCOP中依次写入0X55和0XAA的操作,就会引起看门狗复位。
这样可以使程序重新运行,减小程序跑死的危害。
看门狗的设置比较简单,只要配置好寄存器COPCTL即可用。
COPCTL的第七位为:WCOP。
若写入COPCTL_WCOP=1,则看门狗行运在窗口模式下,必须在看门狗周期的后25%时间内向ARMCOP依次写入0X55和0XAA。
若在其他时间写入,或写入其他值,都会让看门狗溢出,使单片机复位。
若写入COPCTL_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次方)。
M C9S12D G128B单片机寄存器说明书(主要部分)作者:广工翔宇队2008-01-26目录一、CRG(CLOCK AND RESET GENERATOR时钟模块) (5)SYNR与REFDV (5)CRGFLG(时钟产生模块的标志寄存器) (5)CRGINTL(CRG中断允许控制寄存器) (6)CLKSEL(时钟选择寄存器) (6)PLLCTL(锁相环控制寄存器) (6)RTICTL(设置实时中断超时周期寄存器) (7)COPCTL(看门狗控制器) (8)ARMCOP(看门狗复位寄存器) (8)二、AD转换模块 (9)ATDCTL2(AD控制寄存器2) (9)ATDCTL3(AD控制寄存器3) (9)ATDCTL4(时钟选择预分频) (10)ATDCTL5(AD控制器5) (11)ATDSTAT0(AD状态寄存器) (12)ATDDIEN(AD输入使能寄存器) (12)ATDDRH X/ATDDRL X (AD转换结果寄存器) (12)三、PWM模块 (13)PWM初始化步骤 (13)PWME(PWM E NABLE R EGISTER PWM使能寄存器) (13)PWMPOL(PWM P OLARITY R EGISTER 极性选择寄存器) (13)PWMDTY X (PWM C HANNEL D UTY R EGISTERS PWM通道占空比寄存器) (13)PWMPER X (PWM C HANNEL P ERIOD R EGISTERS PWM通道周期寄存器) (14)PWMCLK(PWM C LOCK S ELECT R EGISTER PWM时钟选择寄存器) (14)PWMPRCLK(P RESCALE C LOCK S ELECT R EGISTER 预分频时钟选择寄存器) (15)PWMCTL(PWM C ONTROL R EGISTER 控制寄存器) (15)四、IO模块 (17)P ORT T I/O R EGISTER (PTT) (17)P ORT T I NPUT R EGISTER (PTIT)(PTIS、PTIP、PTIH、PTIJ) (17)P ORT T D ATA D IRECTION R EGISTER (DDRT)(DDRS、DDRH、DDRJ) (17)P ORT T R EDUCED D RIVE R EGISTER(RDRT)(RDRS、RDRP、RDRH、RDRJ) (17)P ORT T P ULL D EVICE E NABLE R EGISTER (PERT)(PERS、PERH、PERJ) (17)PPST(P ORT T P OLARITY S ELECT R EGISTER) (18)PTS(P ORT S I/O R EGISTER) (18)WOMS(P ORT S W IRED-O R M ODE R EGISTER) (18)PTP(P ORT P I/O R EGISTER) (18)PIEP(P ORT P I NTERRUPT E NABLE R EGISTER)(PIEH、PIEJ) (19)PIFP(P ORT P I NTERRUPT F LAG R EGISTER)(PIFH、PIFJ) (19)PTH(P ORT H I/O R EGISTER) (19)P ORT J I/O R EGISTER (PTJ) (19)五、SPI0模块(SPI1模块与之对应) (21)SPI0CR1(SPI0控制寄存器1) (21)SPI0CR2(SPI0控制寄存器2) (22)SPI0BR(波特率设置寄存器) (22)SPI0SR(SPI状态寄存器) (23)SPI0DR(SPI数据寄存) (23)六、ENHANCED CAPTURE TIMER MODULE增强型捕捉定时器模块 (24)TIOS(定时器输入捕捉/输出比较选择寄存器) (24)OC7M(O UTPUT C OMPARE M ASK A CTION) (24)OC7D(O UTPUT C OMPARE 7D ATA R EGISTER) (24)TSCR1 (24)TCTL1/TCTL2(定时器控制寄存器1/2) (25)TCTL3/TCTL4(输入捕捉沿控制(IC7–IC0)) (25)TIE(定时器中断允许控制器) (26)PACN3、PACN2(PACN1、PACN0类似) (26)PACTL(16位计数器控制寄存器) (26)七、SCI 异步品行通信 (28)SCICR1(SCI控制寄存器1) (28)SCICR2(SCI控制寄存器2) (28)SCIBDH/L(SCI波特率设置寄存器) (28)SCISR1(SCI状态寄存器1) (29)SCIDRH/L(SCI接收发送数据寄存器) (29)八、EEPROM(电可擦除寄存器) (30)ECLKDIV(时钟分频器寄存器) (30)ECNFG(EEPROM C ONFIGURATION R EGISTER) (30)EPROT(EEPROM保护设置寄存器) (30)ESTAT(EEPROM状态寄存器) (31)ECMD(EEPROM指令寄存器) (31)ESTAT(EEPROM状态寄存器) (32)MC9S12DG128B特殊功能寄存器说明一、CRG(Clock and Reset Generator时钟模块)SYNR 与 REFDV说明:SYNR:(时钟合成寄存器)有效位为寄存器的低6位,默认地址:$34。
单元一(1)HC08单片机介绍及Codewarrior使用一、单片机基本概念1.何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
PC中的CPU一块就要卖几百块钱,这么多东西做在一起,是不是很贵?说这块芯片体积是不是很大呢?恰恰相反,单片机的价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68,84,100引脚,功能少的10多个或20多个引脚,有的甚至只有8个引脚。
为什么会这样呢?因为功能有强弱。
比如,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。
另外这种芯片的生产量很大,技术也很成熟,如51系列的单片机已经做了十几年,所以价格就很低了。
单片机的功能肯定不强,干吗要学它呢?实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。
所以8051出来十多年,依然没有被淘汰,还在不断的发展中。
2.常用的单片机(1)51系列51系列单片机是Intel公司在20世纪80年代初研制出来的,很快就在我国得到推广和广泛的应用。
20多年来,51系列单片机在教学、工业控制、仪器仪表和信息通信中发挥着重要的作用,并在交通、航运和家用电器等领域取得了大量的应用成果。
20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核给了许多半导体厂家,如Arotel、Philps、Ananog Devlces和Dallas等。
看门狗电路基本原理及屏蔽⽅法⼀、定义 看门狗,⼜叫watchdog timer,是⼀个定时器电路,⼀般有⼀个输⼊,叫喂狗(kicking the dog/service the dog),⼀个输出到MCU的RST端,MCU正常⼯作的时候,每隔⼀段时间输出⼀个信号到喂狗端,给 WDT清零,如果超过规定的时间不喂狗(⼀般在程序跑飞时),WDT定时超过,就会给出⼀个复位信号到MCU,使MCU复位。
防⽌MCU死机. 看门狗的作⽤就是防⽌程序发⽣死循环,或者说程序跑飞。
⼆、基本原理: 看门狗是⼀种监控系统的运⾏状况的⼿段,通过软硬件结合的⽅式实现对系统运⾏状况的监控。
稳定运⾏的软件会在执⾏完特定指令后进⾏喂狗,若在⼀定周期内看门狗没有收到来⾃软件的喂狗信号,则认为系统故障,会进⼊中断处理程序或强制系统复位。
系统上电后根据不同的⼯作模式可以选择使能看门狗的时机,若看门狗被使能则计数器开始计数,如果在设定的时间内没有及时喂狗则会发⽣看门狗超时。
看门狗主要由寄存器、计数器和狗叫模块构成:通过寄存器对看门狗进⾏基本设置,计数器计算狗叫时间,狗叫模块决定看门狗超时后发出的中断或复位⽅式。
三、分类:3.1硬件看门狗: 硬件看门狗是利⽤了⼀个定时器,来监控主程序的运⾏,也就是说在主程序的运⾏过程中,我们要在定时时间到之前对定时器进⾏复位。
如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单⽚机复位。
常⽤的WDT芯⽚如MAX813,5045,IMP 813等。
3.2软件看门狗: ⽽在某些情况下,也会采⽤纯软件的⽅法来设置看门狗,如在单⽚机系统中,利⽤闲置的定时器/计数器就可以设计⼀个软件看门狗。
具体实现步骤如下: ⾸先,在初始化程序中设置定时器/计数器的⽅式以控制寄存器(TMOD)和定时时间的初值,并且打开中断。
然后,根据定时器的时间,在主程序中按⼀定的时间间隔插⼈复位定时器的指令(喂狗),两条喂狗指令之间的时间间隔可以根据系统时钟与指令周期计算出来,⽽且该时间周期应该⼩于定时器的定时时间。
PLL详解什么是锁相环呢?MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。
这就得用到锁相环了。
例如MCU用的外部晶振是16M的无源晶振,则可以通过锁相环PLL把系统时钟倍频到24M,从而给系统提供更高的时钟信号,提高程序的运行速度。
51单片机,AVR单片机内部没有锁相环电路,其系统时钟直接由外部晶振提供。
而XS128内部集成了锁相环电路,其系统时钟既可由外部晶振直接提供,也可以通过锁相环倍频后提供,当然,还有由XS128内部的时钟电路来提供(当其它来源提供的系统时钟不稳定时,内部时钟电路就起作用了,也就是自时钟模式)。
锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。
下面记一下怎样配置锁相环来设定想要的系统时钟。
锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG中的模块,固前面用到的寄存器,这里有些会再用到。
在程序中配置锁相环的步骤如下:第一、禁止总中断;第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK为外部晶振频率)。
CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。
第三、禁止锁相环PLL,即PLLCTL_PLLON=0。
当PLLCTL_PLLON=0时,关闭PLL电路。
当PLLCTL_PLLON=1时,打开PLL电路。
第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。
SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV分别为寄存器SYNR、REFDV 中的值。
什么是锁相环呢?MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。
这就得用到锁相环了。
例如MCU用的外部晶振是16M的无源晶振,则可以通过锁相环PLL把系统时钟倍频到24M,从而给系统提供更高的时钟信号,提高程序的运行速度。
51单片机,AVR 单片机内部没有锁相环电路,其系统时钟直接由外部晶振提供。
而XS128内部集成了锁相环电路,其系统时钟既可由外部晶振直接提供,也可以通过锁相环倍频后提供,当然,还有由XS128内部的时钟电路来提供(当其它来源提供的系统时钟不稳定时,内部时钟电路就起作用了,也就是自时钟模式)。
锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。
下面记一下怎样配置锁相环来设定想要的系统时钟。
锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG中的模块,固前面用到的寄存器,这里有些会再用到。
在程序中配置锁相环的步骤如下:第一、禁止总中断;第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK为外部晶振频率)。
CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。
第三、禁止锁相环PLL,即PLLCTL_PLLON=0。
当PLLCTL_PLLON=0时,关闭PLL电路。
当PLLCTL_PLLON=1时,打开PLL 电路。
第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。
SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1 )其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV分别为寄存器SYNR、REFDV中的值。
mc9s12xe系列单片机参考手册--中文1.3系统时钟介绍时钟和复位发生器模块(CRG)提供的核心和外设模块的所有内部时钟信号。
图1-8显示了从CRG所有模块的时钟连接。
在clock generation中查询CRG时钟产生的细节规范。
系统时钟可以提供多种方式,使系统的工作频率范围要支持:•片上锁相环(PLL)•锁相环自我时钟•振荡器由PLL或振荡器产生的时钟提供主系统时钟频率,核心时钟和总线时钟。
如图1-8所示,这些系统时钟用于驱动整个MCU的core,RAM,和外设。
闪存程序存储器和EEPROM可由总线时钟和振荡器时钟提供时钟信号。
“使用振荡器时钟作为时基,驱动程序,并提供NVM的擦除时间基准。
CAN模块可配置的时钟源来自总线时钟或直接从振荡器时钟。
这允许用户在提供的两种时钟信号的基础上,选择它的时钟性能。
为了确保时钟的存在,MCU包括一个片上时钟监视器,监视器连接到振荡器的输出。
时钟监视器可以被配置为调用PLL自震荡模式或在超过一定时间没有振荡器时钟出现,产生一次系统复位。
除了时钟监视器,MCU还提供了时钟质量检查模块执行时钟准确的检查。
时钟质量检查计数器在一个定义的时间窗口内检查预先设定了的时钟边沿,以确保时钟的正确运行。
检查程序可以被以下具体的事件调用,如唤醒或时钟监视器故障。
MCU可以处在不同的模式,而这与MCU资源的映射和总线接口配置操作相关。
这些内容将在1.4.1芯片配置摘要有提到。
MCU可以有不同的电源操作模式,当并不需要系统满负荷运行时,方便省电的模式是可选的。
这些内容将在1.4.2功率模式有提到。
1.4操作模式有些功能模块是可编程的,可以对某个模块进行冻结,而BGD模块的处于活动对于方便调试是有积极意义的,这在1.4.3冻结模式有提到。
对于系统的完整性,支持独立的系统状态功能,在1.4.4系统状态的说明有提到。
MCU有六个不同的模式而模式与系统资源配置相关。
不同的模式,ROMCTL与 EROMCTL在RESET信号的上升沿的状态,MCU的安全状态都会影响以下设备的特点:•外部总线接口配置•可能会影响Flash中的存储器映射,或不会•调试功能启用或禁用操作模式是由MODC,MODB和MODA在复位时的信号状态决定的。
应用笔记AN3561MC9S08JM60的USB Bootloader文件编号:AN3561版本:0,08/2005苏州大学飞思卡尔嵌入式系统研发中心翻译2009年11月I1.简介 (1)2.B OOTLOADER概述 (1)2.1 Bootloader资源 (1)2.2 Flash存储器保护 (2)2.3 向量重定向 (3)2.4软件启动过程 (3)2.4.1用户模式 (3)2.4.2 bootloader初始化 (4)2.4.3 Bootloader模式 (5)2.5 PC驱动及PC GUI工具 (6)3B OOTLOADER实现指南 (7)3.1 软件整合 (7)3.2 PC驱动安装 (9)3.3 运行PC GUI工具 (11)3.3.1 启动PC GUI工具 (11)3.3.2 擦除Flash (14)3.3.3 空白检测 (14)3.3.4 Flash写入 (15)3.3.5 代码校验 (17)4.结论 (18)附录A例程 (19)MC9S08JM60的USB BootloaderII1.简介 (1)2.B OOTLOADER概述 (1)2.1 Bootloader资源 (1)2.2 Flash存储器保护 (2)2.3 向量重定向 (3)2.4软件启动过程 (3)2.4.1用户模式 (3)2.4.2 bootloader初始化 (4)2.4.3 Bootloader模式 (5)2.5 PC驱动及PC GUI工具 (6)3B OOTLOADER实现指南 (7)3.1 软件整合 (7)3.2 PC驱动安装 (9)3.3 运行PC GUI工具 (11)3.3.1 启动PC GUI工具 (11)3.3.2 擦除Flash (14)3.3.3 空白检测 (14)3.3.4 Flash写入 (15)3.3.5 代码校验 (17)4.结论 (18)附录A例程 (19)III1. 简介本应用笔记描述了MC9S08JM60的bootloader(可译作“引导装入”)技术,该bootloader允许通过USB对Flash进行在线编程。
关于飞思卡尔单片机MC9S12XET256A出现看门狗COP不复位且系统出现死机现象,所有功能或管脚无输出并卡死等问题的总结,希望给遇到同样问题的朋友提供参考。
由于对飞思卡尔的看门狗COP不是很了解,导致工作过程遇到了一些麻烦,后来经过很长时间的搞鼓,并通过NXP官网技术支持的帮助,解决了问题,现总结如下: 与其他单片机不同的是看门狗计数溢出后:9S12是先复位系统(寄存器和所有外设都恢复到默认状态),然后PC指向看门狗中断向量所保存的看门狗中断服务程序地址)。
注意!看门狗中断是不可屏蔽中断,且它并不是一个中断服务函数,只是一个路径。
系统复位以后,执行的第一动作就是将系统指针PC首先跳到该路径上,因此必须在代码里声明该路径的地址向量,声明的地方在一个后缀名为.prm的文件里。
默认只有VECTOR 0 _Startup,但9s12有三种复位的情况,分别指向三个地址,0号是系统上电,非法地址等复位;1号是时钟异常复位;2号就是我们需要的看门狗复位;我们让系统复位后,都把PC指向启动首地址。
注意!如果不定义,系统指针就一直指向对应中断标号的地址上,且不会再跳转移动,整个系统像跑飞或卡死的现象。
这个问题外国朋友Radek说得通俗易懂,如下:Hi XJC,I am glad that it works now.The problem is that the COP do not cause any watchdog interrupt and CopInterrupt() isn’t an interrupt routine (ISR).When COP is not triggered properly, it will reset MCU. If COP is detected as reset source, vector at address 0xFFFA will be fetched. This vector points to your CopInterrupt() routine.Similar is valid also for CM reset (vector at 0xFFFC).POR/External/Illegal Address resets will fetch reset vector at address 0xFFFE.So, the CopInterrupt() routine is executed as first code after MCU reset (while the stack is not initialized yet) and RTI instruction at end of routine doesn’t have sense (there isn’t any context which might be restored). The CopInterrupt() (CMInterrupt()) routine must end by jump into some code. For example:asm jmp _Startup;If you do not want different behavior/code for POR/CM/COP resets, you may define_Startup() routine for all three vectors inside prm file. For example:VECTOR 0 _Startup //Power On, External, Illegal Address resetsVECTOR 1 _Startup //Clock Monitor resetVECTOR 2 _Startup //COP Watchdog resetIn that case you don’t need to define CopInterrupt()/CMInterrupt() routines.I hope it helps you.Have a great day,Radek正常情况下,很多人容易配置成如下图所示的示例,那么就会出现两种情况:当在中断里面放while(1);语句,可以正常产生看门复位;当放一个很长的for循环(超过看门狗溢出的时间),则马上出现卡死现象,不复位情况。
看门狗模块(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@
软件版本:V1.2
最后更新:2011年4月5日
相关信息参考下列地址:
网站:
淘宝店:
------------------------------------
Code Warrior 5.0
Target : MC9S12XS128
Crystal: 16.000Mhz
busclock:8.000MHz
**********************************************/
#include <hidef.h> //工程通用的宏文件
#include "derivative.h" //单片机硬件型号文件
#define LED PORTB //定义连接发光二级管的PORTB口数据寄存
//为LED,写'0'亮,写'1' 灭
#define LED_dir DDRB //定义连接发光二级管的PORTB诜较蚣拇嫫?
//为LEDCPU_dir,写'0'做输入口,写'1'做输出口
/*************************************************************/
/* 初始化看门狗*/
/*************************************************************/
void INIT_COP(void)
{
COPCTL = 0x07; // 7位WCOP=0 设置为正常COP模式
// 6位RSBCK=0设置在BDM模式下允许COP和RTI运行
// 210位CR[2:0]=111 COP溢出频率=OSCCLK / CR[2:0]
// COP溢出频率=16M/2^24
//设置看门狗复位间隔为1.048576s
}
/*************************************************************/
/* 延时函数*/
/*************************************************************/
void delay(void)
{
unsigned int i;
for(i=0;i<50000;i++);
}
/*************************************************************/
/* 主函数*/
/*************************************************************/
void main(void) {
DisableInterrupts; //禁止所有中断打开
INIT_COP(); //初始化看门狗模块
LED_dir = 1; //设置连接发光二级管的PORTB口为输出口
LED = 0; //初始化发光二极管为亮
delay(); //延时一定时间,使人眼能识别发光二极管闪烁现象LED = 1; //发光二极管为灭
EnableInterrupts; //打开所有中断打开
for(;;)
{
_FEED_COP(); //喂狗函数
//在特定时间内依次向ARMCOP写入0X55,0XAA;
delay();
}
}。