SM39R 系列WDT 功能使用方法

SM39R 系列 WDT 功能使用方法
SM39R 系列 WDT 功能使用方法
1
适用产品:
1.1 SM39R16A2/ SM39R12A2/ SM39R08A2
1.2 SM39R04G1/ SM39R02G1
1.3 SM39R2051/ SM39R4051
2
以下说明适用:SM39R08/12/16A2/ SM39R02/04G1/ SM39R4051/ SM39R2051:
2.1 WDT 模块之时钟源为 MCU 内部之 250KHz RC 振荡电路产生。
2.2 WDT 烧录时可设定 WDT 禁能、致能。当于烧录时设定 WDT 禁能,则不论 SFR WDTC^5(WDTE)
于程序中设定为 WDT 功能启动,WDT 模块仍然不会动作;当于烧录时设定 WDT 致能,则 WDT
模块由 WDTC^5(WDTE)于程序中设定为 WDT 功能为启动或停止。
2.3 WDT 启动或停止:当于烧录时设定 WDT 致能,由 WDTC^5(WDTE)决定,当设定为”1”,WDT
启动,设定为”0”,WDT 停止;WDTC SFR 之设定需先由 TAKEY SFR 连续写入 0x55H,0xAAH
及 0x55H 才可修改。
2.4 WDT 重置时间:由程序设定 WDTC^[3:0](WDTM[3:0])决定,共有 16 组可供选择。
2.5 WDT counter 清除可由外部重置,或由软件执行(写入 0x55 至 SFR WDTK 即可)
2.6 WDTK 须不断的执行清除,以确保 WDT counter 不会溢位
2.7 SM39R02/04G1、SM39R20/4051 : 当 WDT counter 溢位时,SFR WDTC^7(WDTF)由硬件设定
为”1”,并且重置 MCU,重置后 WDTC^7 (WDTF)由硬件清除为”0”
2.8 SM39R08/12/16A2 : 当 WDT counter 溢位时,SFR RSTS^3(WDTF)由硬件设定为”1”,并且重
置 MCU,重置后 RSTS^3(WDTF)由硬件清除为”0”
2.9 以下为 WDT reset time 计算方式:
WDTCLK =
250KHz
2 WDTM
Watchdog reset time =
256
WDTCLK
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
1
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
2.10 下表 WDT 重置时间:
Divider
WDTM [3:0]
(250 KHz RC oscillator in)
Time period @ 250KHz
0000
1
1.02ms
0001
2
2.05ms
0010
4
4.10ms
0011
8
8.19ms
0100
16
16.38ms (default)
0101
32
32.77ms
0110
64
65.54ms
0111
128
131.07ms
1000
256
262.14ms
1001
512
524.29ms
1010
1024
1.05s
1011
2048
2.10s
1100
4096
4.19s
1101
8192
8.39s
1110
16384
16.78s
1111
32768
33.55s
Table 1
1
2WDTM
Fig. Watchdog timer block diagram
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
2
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
2.11 SM39R02/04G1、SM39R20/4051 WDT 相关缓存器:
Mnemoni
c
Description
Direct
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RESET
Watchdog Timer
TAKEY
WDTC
WDTK
Time Access Key
F7h
register
Watchdog timer
B6h
control register
Watchdog timer
-
WDTF
-
WDTE
B7h
refresh key
00H
TAKEY [7:0]
04H
WDTM [3:0]
00H
WDTK[7:0]
2.12 SM39R08/12/16A2 WDT 相关缓存器:
Mnemoni
c
Description
Direct
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RESET
Watchdog Timer
TAKEY
WDTC
WDTK
RSTS
Time Access Key
F7h
register
Watchdog timer
B6h
control register
Watchdog timer
-
-
-
WDTE
B7h
refresh key
Reset status
-
-
-
PDRF
WDTF
Mnemonic: TAKEY
7
6
04H
WDTM [3:0]
00H
WDTK[7:0]
A1h
register
00H
TAKEY [7:0]
SWRF
LVRF
PORF
00H
Address: F7h
5
4
3
TAKEY [7:0]
2
1
0
Reset
00H
看门狗控制寄存器(WDTC) 默认是只读 ;程序必须连续对 TAKEY 寄存器写入特定数值 55h、AAh 和 5Ah,才
能对 WDTC 寄存器执行写入。范例如下:
MOV TAKEY, #55h
MOV TAKEY, #0AAh
MOV TAKEY, #5Ah
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
3
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
Mnemonic: WDTK
7
6
Address: B7h
5
4
3
2
1
0
Reset
00h
WDTK[7:0]
WDTK: 看门狗定时器清除计数寄存器
想将看门狗计数值清除为零,须于程序中对 WDTK 寄存器写入 0x55
¾
SM39R02/04G1、SM39R20/4051:
Mnemonic: WDTC
Address: B6h
7
6
5
4
WDTF
-
WDTE
-
3
2
1
0
Reset
04H
WDTM [3:0]
WDTF: 看门狗定时器复位旗标
当看门狗重新复位 MCU 时,WDTF 旗标将被硬件设置为 1。
清除旗标可透过程序或外部复位或上电复位。
WDTE: 看门狗定时器致能控制位
此WDTE位需于软件烧录时(ICP或ISP)设定看门狗开启(出厂预设开启)后设置才有效,也就
是说若烧录时芯片组态设置看门狗是开启,则程序可选择开启或关闭,反之,烧录时关
闭(WDTEN=1)则程序开启看门狗也无效。
0︰使无能力WDT。
1︰使成为可能WDT。
WDTM [3:0]: WDT 重置时间选择位
请参考 Table 1 内的 WDT 重置时间。
¾
SM39R08/12/16A2:
Mnemonic: WDTC
7
-
6
Address: B6h
5
4
WDTE
-
3
2
1
WDTM [3:0]
0
Reset
04H
WDTE: 看门狗定时器致能控制位
此WDTE位需于软件烧录时(ICP或ISP)设定看门狗开启(出厂预设开启)后设置才有效,也就
是说若烧录时芯片组态设置看门狗是开启,则程序可选择开启或关闭,反之,烧录时关
闭(WDTEN=1)则程序开启看门狗也无效。
0︰使无能力WDT。
1︰使成为可能WDT。
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
4
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
WDTM [3:0]: WDT 重置时间选择位
请参考 Table 1 内的 WDT 重置时间。
Mnemonic: RSTS
Address: A1h
7
6
5
4
3
2
1
0
Reset
-
-
-
PDRF
WDTF
SWRF
LVRF
PORF
00H
WDTF: 看门狗定时器复位旗标
当看门狗重新复位 MCU 时,WDTF 旗标将被硬件设置为 1。
清除旗标可透过程序或外部复位或上电复位。
范例:
开启 WDT 和选择 WDT 重置时间为 262.14ms.
首先,请确认烧录软件内芯片组态设置看门狗是开启(WDTEN = 0)
接着程序设定如下:
MOV TAKEY, #55h
MOV TAKEY, #0AAh
MOV TAKEY, #5Ah
; enable WDTC write attribute.
MOV WDTC, #28h
; Set WDTM [3:0] = 1000b. Set WDTE =1 to enable WDT
.
; function.
..
MOV WDTK, #55h
; Clear WDT timer to 0.
2.13 WDT 应用的范例程序
1. 烧录时先于芯片组态中设定 WDTE 致能及选择 WDTM 重置时间
Description
2. 当执行 user code 时,WDTK 须不断的执行清除
3. 量测 P1,若为 0x55 表示正确;将 P2.0 置低后 P1 若输出 0xaa,表示 WDT counter 溢位
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
5
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
C 语言
//====================================================================
//
SYNCMOS
TECHNOLOGY
//====================================================================
#include <SM39R16A2.h>
#define d_WDTE 1
//WDT Enable Bit
#define d_WDTM 0x04
//WDTM[3:0] WDT Clock Source Divider Bit (0~F)
//---------------------------------------------------------------------//
void WDT_initialize(void)
//Initialize WDT
{
TAKEY=0x55;
//**************************************//
TAKEY=0xAA;
//Set To Enable The WDTC Write Attribute//
TAKEY=0x5A;
//**************************************//
WDTC=(d_WDTM)|(d_WDTE<<5);
//Set WDT Reset Time and Enable WDT
}
//---------------------------------------------------------------------//
void WDT_CountClear(void)
{
WDTK=0x55;
//WDT Timer Clear To Zero
}
//---------------------------------------------------------------------//
void WDT_Disable(void)
{
TAKEY=0x55;
//**************************************//
TAKEY=0xAA;
//Set To Enable The WDTC Write Attribute//
TAKEY=0x5A;
//**************************************//
WDTC=0x00;
//Disable WDT Function
}
//---------------------------------------------------------------------//
void main(void)
//Main Function Start
{
if((RSTS&0x08))
// SM39RxxA2 Decision WDT Occur (WDTF=1)
//if((WDTC&0x80))
// SM39RxxG1/SM39R20/4051 Decision WDT Occur
{
RSTS=RSTS&0xF7;
//SM39RxxA2 Clear WDTF (WDT Timer Reset Flag)
//WDTC=WDTC&0x7F
//SM39RxxG1/SM39R20/4051 Clear WDTF
WDT_CountClear();
//Clear WDT Count Subroutine
WDT_Disable();
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
6
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
P1=0xaa;
//WDT Occur SM39RxxA2
// P3=0xaa;
//WDT Occur SM39RxxG1/SM39R20/4051
while(1);
}
WDT_initialize();
//Call WDT Initial Subroutine
P1=0x55;
//SM39RxxA2
// P3=0x55;
//SM39RxxG1/SM39R20/4051
if(P2_0==0)
//SM39RxxA2
// if(P1_0==0)
//SM39RxxG1/SM39R20/4051
{
while(1);
//WDT Overflow
}
WDT_CountClear();
//Clear WDT Count Subroutine
}
Description
1. 烧录时先于芯片组态中设定 WDT 致能及选择 WDTM 重置时间 262.14ms
2. 当执行 user code 时,WDTK 须不断的执行清除
3. 量测 P2,若为 0x00 表示正确;若 P2 不断的 Hi-Low 变化,表示 WDT counter 溢位
汇编
//====================================================================
//
SYNCMOS
TECHNOLOGY
//====================================================================
P1_0 EQU 90h
TAKEY EQU 0F7h
WDTC EQU 0B6h
WDTK EQU 0B7h
ORG
0000h
LJMP
START
MOV
SP,#0x07
CALL
WDT_INITIAL
START:
WDT_SUB:
MOV
P3,#55h
MOV
A,WDTC
JB
ACC.7, WDT_OVERFLOW
CALL WDT_CLR
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
7
Ver. A 2010/08
SM39R 系列 WDT 功能使用方法
JB
JMP
P1_0, WDT_SUB
$
//------------------------------------------------------------------//
WDT_OVERFLOW:
MOV
P3,#0AAh
ANL
WDTC,#7Fh
JMP
$
//SM39RxxG1/SM39R20/4051 Clear WDTF
//------------------------------------------------------------------//
WDT_INITIAL:
MOV
TAKEY,#55h
MOV
TAKEY,#0AAh
MOV
TAKEY,#5Ah
MOV
WDTC,#28h
//WDT ENABLE & SET WDT RESET TIME
RET
//------------------------------------------------------------------//
WDT_CLR:
MOV
WDTK,#55h
//WDT Timer Clear To Zero
RET
END
新茂国际科技希望能为客户减少开发的时间及辛劳,故提供 “Codzard 范例程序产生器"
可于 新茂网站首页>下载专区> 软件下载 内下载此软件
如有任何建议,请来信告知,谢谢!
销售客服
电子信箱: [email protected]
技术支持
电子信箱: [email protected]
Specifications subject to change without notice, contact your sales representatives for the most recent information.
ISSFA-0228
8
Ver. A 2010/08