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-0227
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-0227
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-0227
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-0227
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-0227
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-0227
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-0227
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-0227
8
Ver. A 2010/08