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