第23講-RTC與看門狗_第1頁(yè)
第23講-RTC與看門狗_第2頁(yè)
第23講-RTC與看門狗_第3頁(yè)
第23講-RTC與看門狗_第4頁(yè)
第23講-RTC與看門狗_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第二十三講RTC與看門狗河南大學(xué)計(jì)算機(jī)與信息工程學(xué)院授課人:周毅聯(lián)系電話mail:zhouyi@計(jì)算機(jī)專業(yè)核心課程之一概述

RTC(實(shí)時(shí)時(shí)鐘)功能:通常采用RTC來提供可靠的系統(tǒng)時(shí)間,包括時(shí)、分、秒和年、月、日等;而且要求在系統(tǒng)處于關(guān)機(jī)狀態(tài)下它也能夠正常工作(后備電池),它的外圍也不需要太多的輔助電路,典型的就是只需要一個(gè)高精度的32.768KHz晶振和電阻電容等。

RTC應(yīng)用:現(xiàn)在很多電子產(chǎn)品都有RTC功能,如電子日歷(臺(tái)式、壁式等)、手持?jǐn)?shù)碼產(chǎn)品(手機(jī)、電子詞典、各種學(xué)習(xí)機(jī)、照相機(jī)、攝像機(jī)等)、電子計(jì)量?jī)x表(電度表、燃?xì)獗怼⑺淼龋?、家用電器(電視機(jī)、機(jī)頂盒、DVD等)等,應(yīng)用非常廣泛。

S3C2410的RTC的特點(diǎn)時(shí)鐘數(shù)據(jù)采用BCD編碼時(shí)鐘數(shù)據(jù)有:秒、分、時(shí)、日、月、年、星期能夠?qū)﹂c年的年月日進(jìn)行自動(dòng)處理具有告警功能,當(dāng)系統(tǒng)處于關(guān)機(jī)狀態(tài)時(shí),能產(chǎn)生告警中斷具有獨(dú)立的電源輸入提供毫秒級(jí)時(shí)鐘中斷,該中斷可用于作為嵌入式操作系統(tǒng)的內(nèi)核時(shí)鐘S3C2410的RTC結(jié)構(gòu)

S3C2410的RTC主要有5部分構(gòu)成:時(shí)鐘發(fā)生器、節(jié)拍發(fā)生器、時(shí)間與日期計(jì)數(shù)器(時(shí)分秒年月日星期)、報(bào)警發(fā)生器、控制邏輯等部分。XTAL1XTAL2節(jié)拍發(fā)生器時(shí)鐘發(fā)生器時(shí)分秒計(jì)數(shù)器年月計(jì)數(shù)器閏年發(fā)生器日星期計(jì)數(shù)器控制邏輯時(shí)鐘分頻器報(bào)警發(fā)生器RTCVDDPMWKUPALMINTPWDNS3C2410RTC的振蕩電路

S3C2410RTC的只需外接2個(gè)20P左右的小電容、32.768KHz的晶振即可。RTC專用寄存器

S3C2410的RTC有17個(gè)專用寄存器,均需用字節(jié)讀寫。RegisterAddressR/WDescriptionResetValueRTCCON0x57000040/3R/WRTC控制寄存器0x0TICNT0x57000044/7R/WRTC節(jié)拍計(jì)數(shù)器0x00RTCALM0x57000050/3R/WRTC報(bào)警控制寄存器0x00RTCRST0x5700006C/FR/WRTC循環(huán)復(fù)位寄存器0x0ALMSEC0x57000054/7R/W報(bào)警秒數(shù)寄存器0x00ALMMIN0x57000058/BR/W報(bào)警分鐘數(shù)寄存器0x00ALMHOUR0x5700005C/FR/W報(bào)警小時(shí)數(shù)寄存器0x00ALMDAY0x57000060/3R/W報(bào)警天(日)數(shù)寄存器0x01ALMMON0x57000064/7R/W報(bào)警月數(shù)寄存器0x01ALMYEAR0x57000068/BR/W報(bào)警年數(shù)寄存器0x00日期、時(shí)間寄存器RegisterAddressR/WDescriptionResetValueBCDSEC0x57000070/3R/W秒當(dāng)前值寄存器0xXXBCDMIN0x57000074/7R/W分鐘當(dāng)前值寄存器0xXXBCDHOUR0x57000078/BR/W小時(shí)當(dāng)前值寄存器0xXXBCDDAY0x5700007C/FR/W日當(dāng)前值寄存器0xXXBCDDATE0x57000080/3R/W星期當(dāng)前值寄存器0xXXBCDMON0x57000084/7R/W月當(dāng)前值寄存器0xXXBCDYEAR0x57000088/BR/W年當(dāng)前值寄存器0xXXRTC專用寄存器RegisterAddressR/WDescriptionResetValueRTCCON0x57000040(L)0x57000043(B)R/W(字節(jié))RTC控制寄存器0x01、RTC控制寄存器(RTCCON)字段名位意義初值CLKRST3RTC時(shí)鐘計(jì)數(shù)復(fù)位。

0:不復(fù)位;1=BCD計(jì)數(shù)復(fù)位。0CNTSEL2BCD計(jì)數(shù)選擇。0:合并BCD計(jì)數(shù);

1=保留(單獨(dú)的BCD計(jì)數(shù)器)0CLKSEL1BCD時(shí)鐘選擇。0:XTAL/327681:用XTAL原值(但只用于測(cè)試)0RTCEN0RTC控制使能。0:失能;1:使能指BCD時(shí)間計(jì)數(shù)和讀取操作可以被執(zhí)行0RegisterAddressR/WDescriptionResetValueTICNT0x57000044(L)0x57000047(B)R/W(字節(jié))RTC節(jié)拍時(shí)間計(jì)數(shù)器0x002、RTC節(jié)拍時(shí)間計(jì)數(shù)器(TICNT)字段名位意義初值TICKINTENABLE7

節(jié)拍中斷使能。

0:失能,1:使能。0TICKTIMECOUNT6:0

節(jié)拍時(shí)間計(jì)數(shù)值(1~127)。0000000說明:這個(gè)計(jì)數(shù)器的值在內(nèi)部減少,用戶不能在工作時(shí)讀取這個(gè)計(jì)數(shù)器的值。

RegisterAddressR/WDescriptionResetValueRTCALM0x57000050(L)0x57000053(B)R/W(字節(jié))RTC報(bào)警控制寄存器0x03、RTC報(bào)警控制寄存器(RTCCON)字段名位意義初值Reserved7

保留(為0)0ALMEN6

報(bào)警總使能位。0:失能;1:使能0YEAREN5

年報(bào)警使能位。0:失能;1:使能0MONEN4

月報(bào)警使能位。0:失能;1:使能0DATEEN3

日?qǐng)?bào)警使能位。0:失能;1:使能0HOUREN2

時(shí)報(bào)警使能位。0:失能;1:使能0MINEN1

分報(bào)警使能位。0:失能;1:使能0SECEN0

秒報(bào)警使能位。0:失能;1:使能0RegisterAddressR/WDescriptionResetValueALMSEC0x57000054(L)0x57000057(B)R/W(字節(jié))報(bào)警秒數(shù)寄存器0x004、RTC報(bào)警秒數(shù)寄存器(ALMSEC)字段名位意義初值Reserved7

保留(為0)0ALMSECH6:4

報(bào)警時(shí)間秒十位,BCD值。0~5000ALMSECL3:0

報(bào)警時(shí)間秒個(gè)位,BCD值。0~90000RegisterAddressR/WDescriptionResetValueALMMIN0x57000058(L)0x5700005B(B)R/W(字節(jié))報(bào)警分鐘數(shù)寄存器0x005、報(bào)警時(shí)間分鐘數(shù)寄存器(ALMMIN)字段名位意義初值Reserved7

保留(為0)0ALMMINH6:4

報(bào)警時(shí)間分鐘十位,

BCD值。0~5000ALMMINL3:0

報(bào)警時(shí)間分鐘個(gè)位,

BCD值。0~90000RegisterAddressR/WDescriptionResetValueALMHOUR0x5700005C(L)0x5700005F(B)R/W(字節(jié))報(bào)警小時(shí)寄存器0x006、報(bào)警時(shí)間小時(shí)數(shù)寄存器(ALMHOUR)字段名位意義初值Reserved7:6

保留(為0)00ALMHOURH5:4

報(bào)警時(shí)間小時(shí)十位,

BCD值。0~200ALMHOURL3:0

報(bào)警時(shí)間小時(shí)個(gè)位,

BCD值。0~90000RegisterAddressR/WDescriptionResetValueALMDATE0x57000060(L)0x57000063(B)R/W(字節(jié))報(bào)警日期天數(shù)寄存器0x017、RTC報(bào)警天數(shù)寄存器(ALMDATE)字段名位意義初值Reserved7:6

保留(為0)00ALMDATEH5:4

報(bào)警日期天數(shù)十位,

BCD值。0~300ALMDATEL3:0

報(bào)警日期天數(shù)個(gè)位,

BCD值。0~90001RegisterAddressR/WDescriptionResetValueALMMON0x57000064(L)0x57000067(B)R/W(字節(jié))報(bào)警日期月數(shù)寄存器0x018、報(bào)警時(shí)間月數(shù)寄存器(ALMMON)字段名位意義初值Reserved7:5

保留(為0)000ALMMONH4

報(bào)警日期月數(shù)十位,

BCD值。0~10ALMMONL3:0

報(bào)警日期月數(shù)個(gè)位,

BCD值。0~90001RegisterAddressR/WDescriptionResetValueALMYEAR0x57000068(L)0x5700006B(B)R/W(字節(jié))報(bào)警年數(shù)寄存器0x009、報(bào)警時(shí)間年數(shù)寄存器(ALMYEAR)字段名位意義初值A(chǔ)LMYEARH7:4

報(bào)警日期年數(shù)十位,

BCD值。0~90000ALMYEARL3:0

報(bào)警日期年數(shù)個(gè)位,

BCD值。0~90000RegisterAddressR/WDescriptionResetValueRTCRST0x5700006C(L)0x5700006F(B)R/W(字節(jié))秒循環(huán)復(fù)位寄存器0x0010、秒循環(huán)復(fù)位寄存器(RTCRST)字段名位意義初值Reserved7:4

保留(為0)000SRSTEN3

秒循環(huán)復(fù)位控制位。

0:禁止;1:允許0SECCR2:0

秒循環(huán)進(jìn)位邊界。011:30秒;

100:40秒;101:50秒。00S3C2410RTC使用方法

1、讀/寫寄存器

(1)設(shè)置允許讀寫:對(duì)寄存器RTCCON的0位寫1。

(2)顯示時(shí)間、日期方法:需要不斷地從BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON、和BCDYEAR寄存器讀取數(shù)據(jù),然后顯示出來。

(3)可能會(huì)引起顯示錯(cuò)誤。 例如,假設(shè)用戶在2011年12月31日23點(diǎn)59分59秒讀取寄存器BCDYEAR到BCDSEC,在用戶讀取BCDSEC寄存器時(shí),如果結(jié)果是0,那么很有可能年、月、日、時(shí)、分已經(jīng)變成了2012年1月1日0時(shí)0分了,數(shù)據(jù)組合在一起可能是錯(cuò)的。讀取的數(shù)據(jù)可能是:

1)2011年12月1日0時(shí)0分

2)2011年1月1日0時(shí)0分,等

解決的方法:當(dāng)讀取到的BCDSEC等于0時(shí),用戶應(yīng)該再讀取一次BCDYEAR到BCDSEC的值。

2、報(bào)警功能

RTC的報(bào)警寄存器(RTCALM)決定了報(bào)警的使能、禁止、以及報(bào)警時(shí)間設(shè)定的條件。 在RTC報(bào)警的使能情況下:

(1)在正常工作模式下,報(bào)警中斷(ALMINT)是激活狀態(tài)的。

(2)在掉電模式下(PWDN信號(hào)有效),電源管理喚醒信號(hào)(PMWKUP)與報(bào)警中斷(ALMINT)都是激活狀態(tài)。 3、節(jié)拍中斷

RTC節(jié)拍用于中斷請(qǐng)求。

TICNT寄存器:有中斷使能位、節(jié)拍時(shí)間位。 當(dāng)節(jié)拍計(jì)數(shù)值到達(dá)0時(shí),就會(huì)觸發(fā)節(jié)拍中斷。節(jié)拍中斷的間隔時(shí)間計(jì)算如下:Period=(n+1)/128秒

n

:節(jié)拍時(shí)間計(jì)數(shù)值(1~127)

說明:RTC節(jié)拍中斷可以作為RTOS(實(shí)時(shí)操作系統(tǒng))內(nèi)核的時(shí)間節(jié)拍。應(yīng)用舉例 例:編寫一程序,對(duì)S3C2410的RTC進(jìn)行設(shè)置,使用節(jié)拍中斷,每1秒中斷一次,中斷后顯示出當(dāng)前的日期和時(shí)間。初始日期、時(shí)間設(shè)置為正確值。 解:

1、設(shè)置控制寄存器:

RTCCON=0x0001=0x01

含義:RTC不復(fù)位、正常BCD計(jì)數(shù)、BCD時(shí)鐘選擇為1/32768、允許讀出RTC值

2、設(shè)置節(jié)拍時(shí)間寄存器:

TICNT=0x11111111=0xFF

含義:允許節(jié)拍中斷、節(jié)拍計(jì)數(shù)值為127,每1秒鐘中斷一次。BIT_TICK

EQU

(0x1<<8)BIT_ALLMSK EQU (0xffffffff)BIT_RTC

EQU

(0x1<<30)#include"2410addr.h"#include"2410lib.h"voidTest_Rtc_Tick(void);void__irqRtc_Tick(void); voidTest_Rtc_Tick(void){Uart_Printf("RTCTickinterrupttestforS3C2410!\n");

pISR_TICK=(unsigned)Rtc_Tick; //設(shè)置中斷服務(wù)程序地址

rINTMSK&=~(BIT_TICK); //(0x1<<8) //開時(shí)鐘節(jié)拍中斷

//設(shè)置日期與時(shí)間

rBCDYEAR=0x07;rBCDMON=0x05;rBCDDAY=0x03; //SUN:1MON:2 //TUE:3WED:4 //THU:5FRI:6SAT:7rBCDDATE=0x22;rBCDHOUR=0x08;rBCDMIN=0x38;rBCDSEC=0x25;

rTICNT=(1<<7)+127; //設(shè)置節(jié)拍值//Period=(n+1)/128=1sec

rRTCCON=0x01;//啟動(dòng)計(jì)時(shí)、允許讀寫

Uart_Printf("Pressanykeytoexit.\n");

Uart_Getch(); //等待按鍵

rINTMSK|=BIT_TICK; //(1<<8) //關(guān)閉時(shí)鐘節(jié)拍中斷}void__irqRtc_Tick(void){ char year,month,date,hour,min,sec; //讀取年月日

year=rBCDYEAR; month=rBCDMON&0x1F;

date=rBCDDATE&0x3F;

//讀取時(shí)分秒

hour=rBCDHOUR&0x3F;min=rBCDMIN&0x7F;sec=rBCDSEC&0x7F;

//顯示日期、時(shí)間

Uart_Printf(“20%2x年%2x月%2x日,%2x:%2x:%2x\n",year,month,datehour,min,sec); //清除中斷請(qǐng)求標(biāo)志

rSRCPND|=BIT_TICK;

//清除中斷請(qǐng)求標(biāo)志

rINTPND|=BIT_TICK;}看門狗概念

當(dāng)嵌入式系統(tǒng)運(yùn)行時(shí)受到外部干擾或者系統(tǒng)錯(cuò)誤,程序有時(shí)會(huì)出現(xiàn)“跑飛”,導(dǎo)致整個(gè)系統(tǒng)癱瘓。在對(duì)系統(tǒng)穩(wěn)定性要求較高的場(chǎng)合,為了防止這一現(xiàn)象的發(fā)生,需要一種叫“看門狗”(WATCHDOG)的電路??撮T狗的作用就是當(dāng)系統(tǒng)“跑飛”而進(jìn)入死循環(huán)時(shí),恢復(fù)系統(tǒng)的運(yùn)行。

看門狗:是一種電路,具有監(jiān)視并恢復(fù)程序正常運(yùn)行的功能。是一定時(shí)器電路??撮T狗的工作原理 其基本原理為:

設(shè)一系統(tǒng)程序完整運(yùn)行一周期的時(shí)間是Tp,看門狗的定時(shí)周期為Ti,要求Ti>Tp。

在程序運(yùn)行一周期后,修改定時(shí)器的計(jì)數(shù)值,只要程序正常運(yùn)行,定時(shí)器就不會(huì)溢出。 若由于干擾等原因使系統(tǒng)不能在Tp時(shí)刻修改定時(shí)器的計(jì)數(shù)值,定時(shí)器將在Ti時(shí)刻溢出,引發(fā)系統(tǒng)復(fù)位,使系統(tǒng)得以重新運(yùn)行,從而起到監(jiān)控作用。S3C2410看門狗的功能

S3C2410的看門狗定時(shí)器有兩個(gè)功能:

(1)定時(shí)器功能:可以作為常規(guī)定時(shí)器使用,它是一個(gè)十六位的定時(shí)器,并且可以產(chǎn)生中斷,中斷名為INT_WDT,中斷號(hào)是0x09。

(2)復(fù)位功能:作為看門狗定時(shí)器使用,當(dāng)時(shí)鐘計(jì)數(shù)減為0(超時(shí))時(shí),它將產(chǎn)生一個(gè)128個(gè)時(shí)鐘周期的復(fù)位信號(hào)。S3C2410看門狗結(jié)構(gòu)與工作原理

S3C2410ARM9的看門狗主要由五部分構(gòu)成:時(shí)鐘、看門狗計(jì)時(shí)器、看門狗數(shù)據(jù)寄存器、復(fù)位信號(hào)發(fā)生器、控制邏輯等。

S3C2410ARM9的看門狗工作原理:中斷請(qǐng)求復(fù)位看門狗計(jì)數(shù)器WDT數(shù)據(jù)寄存器預(yù)分頻器再分頻器WDT控制寄存器復(fù)位信號(hào)發(fā)生器PCLKS3C2410看門狗定時(shí)時(shí)間 預(yù)分頻器為8位,其值為:0---255

再分頻器可選擇值為:16、32、64、128

輸入到計(jì)數(shù)器的時(shí)鐘周期為:T_wtd=1/[PCLK/(Prescaler+1)/Division_factor]

看門狗的定時(shí)周期為:T=WTDAT×T_wtd

注意: 一旦看門狗的定時(shí)器啟動(dòng)工作,其數(shù)據(jù)寄存器(WTDAT)中的值將不會(huì)自動(dòng)讀到時(shí)間寄存器中間去(WTCNT)。 由于這個(gè)原因,程序員必須在看門狗計(jì)時(shí)器啟動(dòng)之前,應(yīng)該將一個(gè)初始值寫入到看門狗的時(shí)間計(jì)數(shù)器(WTCNT)中間去。 即先對(duì)時(shí)間計(jì)數(shù)器系初值,再啟動(dòng)看門狗工作。

看門狗專用寄存器

共3個(gè),其基地址為0x53000000。寄存器描述初值偏移地址WTCON看門狗控制寄存器0x80210WTDAT看門狗數(shù)據(jù)寄存器0x80004WTCNT看門狗計(jì)數(shù)寄存器0x80008RegisterOffAddR/WDescriptionResetValueWTCON0R/W看門狗控制寄存器0x80211、看門狗控制寄存器(WTCON)字段名位意義初值PrescalerValue15:8

預(yù)分頻值。0---255。0x80Reserved7:6

保留(為0)00WatchdogTimer5

看門狗控制位。

0:禁止;1:允許11、看門狗控制寄存器(WTCON,續(xù))字段名位意義初值ClockSelect4:3

再分頻值選擇。00:16;

01:32;10:64;11:12800InterruptGeneration2

看門狗中斷控制。

0:禁止;1:允許。0Reserved1

保留(為0)0ResetEnable0

看門狗復(fù)位功能控制。

0:禁止;1:允許。1RegisterOffAddR/WDescriptionResetValueWTDAT4R/W看門狗數(shù)據(jù)寄存器0x80002、看門狗數(shù)據(jù)寄存器(WTDAT)說明:(1)該數(shù)據(jù)寄存器為對(duì)看門狗計(jì)數(shù)器重裝計(jì)數(shù)值。初始值為0x8000。 (2)在初始化看門狗操作中,WTDATA的值不會(huì)自動(dòng)加載到定時(shí)計(jì)數(shù)器中。 (3)在計(jì)數(shù)溢出后,WTDAT的值將被裝載到WTCNT寄存器中。RegisterOffAddR/WDescriptionResetValueWTCNT8R/W看門狗計(jì)數(shù)寄存器0x80003、看門狗計(jì)數(shù)寄存器(WTCNT)字段名位意義初值CountValue15:0

看門狗的當(dāng)前計(jì)數(shù)值0x8000

說明:在計(jì)數(shù)中只能讀,不能寫(寫不起作用)。應(yīng)用舉例

例:編寫一程序,利用S3C2410看門狗中斷產(chǎn)生頻率為1kHz的方波,并且從GPB0引腳輸出。設(shè)S3C2410的PCLK為50MHz。

解:(1)計(jì)算數(shù)據(jù)寄存器值

1)取再分頻值為16,分頻后的頻率為:50M/16=3125000Hz

2)取預(yù)分頻值為25,分頻后的頻率為:3125000/25=125000Hz

3)取計(jì)數(shù)值為60,則計(jì)數(shù)器后的頻率為:125000/60=2083.3Hz

4)方波頻率為:2083.3/2=1042Hz不可能實(shí)現(xiàn)準(zhǔn)確的1000Hz方波。應(yīng)用舉例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論