您的位置:首页单片机义隆单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

WDT wakeup 的设定与使用

[日期:2008-05-11 ] [来源:东哥单片机学习网(www.picavr.com) 作者:佚名] [字体: (投递新闻)
 

一、WDT相关寄存器的设置
            1、 设定CONT寄存器中的bit3(PAB)位,看是否使用预分频器;
            2、 设定预分频系数,即设定CONT寄存器的PSR2、PSR1、PSR0位,
            7 6 5 4 3 2 1 0
            INTE INT TS TE PAB PSR2 PSR1 PSR0
            Bit3: 预分频分配位。
               0: TCC;1: WDT。
            3、 如果使能WDT唤醒,建议客户P6口输入唤醒或比较器唤醒禁止。
              
            原因:WDT唤醒和P6口输入唤醒或比较器唤醒同时使能,当同时唤醒时,IC会优先reset,而不去执行P5口输入唤醒后的程式或比较器唤醒后的程式,故如果使能WDT唤醒,建议客户P6口输入唤醒或比较器唤醒禁止
            4、 WDTC,使能看门狗定时器(WDT);将IOCE0寄存器bit7置1;
            7 6 55 4 3 2 1 0
            WDTE EIS - - - - - -
            Bit7: WDT使能控制位。
               0: 禁止; 1: 使能。
            5、 下SLEP指令

            二、WDT唤醒时间计算
            1. SETUP TIME:22.0ms±30%(vdd==3v)
                注:当vdd电压变化时SET TIME会相应变化
            2. WDT的唤醒时间
            CRYSTAL MODE RC MODE
            WDT的唤醒时间                Setup time*prescaler+ setup time
            3. 上表中setuptime*prescaler的时间
            对CONT寄存器的后4位
            当PAB==0,setuptime*prescaler== setuptime
            当PAB==1,setuptime*prescaler== NUM*setuptime
            NUM PS2 PS1 PS0
            1 0 0 0
            2 0 0 1
            4 0 1 0
            8 0 1 1
            16 1 0 0
            32 1 0 1
            64 1 1 0
            128 1 1 1

            三、应用举例
            以下代码是实现用WDT唤醒EM78P458A的Demo
Code,Port5.1端口输出脉冲,用来测量睡眠时间,也可接LED灯来进行观测。
            Port5    ==      0x05           ; Port5端口
            RF       ==      0x0F           ; 中断状态寄存器
            IOCE0    ==      0x0E           ; WDT控制寄存器
            Wdt_buf  ==      0x20           ; 延时缓冲器
                     Num     ==      1
            ;----------------------------MAIN
            PROGRAM------------------------------;
                    ORG     0X00
                    JMP     Wdt_Start
                    ORG     0x20
            ;----------------------------------------------------------------------;
            Wdt_Delay:
                    MOV     Wdt_buf, A
            Wdt_Delay_Loop:
                    DJZ     Wdt_buf
                    JMP     Wdt_Delay_Loop
                    RET
            ;----------------------------------------------------------------------;
            Wdt_Start:
                    BC      R9, 5           ; 选择段0
                    MOV     A, @0b00000000
                    IOW     Port5           ; 设置Port5口输出
                    BS      Port5, num      ; Port5.1输出脉冲
                    MOV     A, @255         ; 等待(P5.1可接LED灯)  
                    CALL    Wdt_Delay
                    BC      Port5, num
            ;----------------------------------------------------------------------;
                    CONTR
                    AND     A, @0b11110000  ; 保留不需要设置的状态位  
                    OR      A, @0b00001011  ; 将分频器分配给WDT,预除数设为16
                    CONTW
                    MOV     A, @0           ; 禁止Port6口输入唤醒功能
                    IOW     RF
                    WDTC
                    IOR     IOCE0
                    OR      A, @0b10000000  ; 打开看门狗
                    IOW     IOCE0

                    SLEP
                    NOP
            LOOP:
                    NOP
                    JMP     LOOP
                    END

阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐