技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 定時(shí)器和實(shí)時(shí)時(shí)鐘應(yīng)用

定時(shí)器和實(shí)時(shí)時(shí)鐘應(yīng)用

時(shí)間:2007-12-20 10:20:00來(lái)源:ronggang

導(dǎo)語(yǔ):?對(duì)ETR186T和ETR232i,由于不確定最終系統(tǒng)是否有RTC,所以BIOS沒(méi)有做RTC的同步操作。用戶應(yīng)用程序可以很方便的實(shí)現(xiàn)同步的操作
在嵌入式系統(tǒng)中經(jīng)常會(huì)用到定時(shí)器和實(shí)時(shí)時(shí)鐘的功能,這里首先介紹定時(shí)器和實(shí)時(shí)時(shí)鐘的概念。 (1) 定時(shí)器是指82C54這樣的可編程Timer,通常具有固定頻率的輸入脈沖,Timer對(duì)該脈沖記數(shù),當(dāng)記數(shù)到所設(shè)置的值后,定時(shí)器可觸發(fā)CPU生產(chǎn)中斷,因而定時(shí)器一般用于產(chǎn)生1ms-50ms的事件,來(lái)驅(qū)動(dòng)相應(yīng)的應(yīng)用程序執(zhí)行某個(gè)動(dòng)作。 (2) 實(shí)時(shí)時(shí)鐘,也簡(jiǎn)稱為RTC,是一個(gè)獨(dú)立的電路單元,可提供精確的日期和時(shí)間參數(shù),通常包括“年-月-日”,“時(shí):分:秒”。RTC一般帶有后備電池,通過(guò)擴(kuò)展總線或SPI接口與系統(tǒng)相連。 與標(biāo)準(zhǔn)的PC一樣,英創(chuàng)嵌入式網(wǎng)絡(luò)模塊帶有一個(gè)每秒中斷18.2次的系統(tǒng)定時(shí)器Timer0,每次中斷間隔時(shí)間約為55ms,操作系統(tǒng)中和時(shí)間相關(guān)的功能都將和系統(tǒng)定時(shí)器有關(guān)。此外模塊中還為用戶保留了一個(gè)16-bit可編程定時(shí)器Timer1,其輸入頻率通常為1MHz,特別適合用做ms級(jí)的定時(shí)器。目前英創(chuàng)模塊中一部分型號(hào)還同時(shí)支持RTC,如NetBox-II、ETR100E等,圖1指出ETR100E上的RTC。
圖1 ETR100E上的RTC
對(duì)還沒(méi)有在模塊上支持RTC的型號(hào),ETR186和ETR232i,都在其評(píng)估地板上擴(kuò)展有RTC單元,如圖2所示。用戶可參考評(píng)估板電路圖,為自己的應(yīng)用底板擴(kuò)展RTC單元。
圖2 ETR232i評(píng)估地板上擴(kuò)展的RTC
由于操作系統(tǒng)提供的日期和時(shí)間都是根據(jù)系統(tǒng)定時(shí)器生成的,所以為了讓系統(tǒng)的時(shí)間與當(dāng)前真實(shí)時(shí)間一致,就需要用RTC的時(shí)間去同步系統(tǒng)的時(shí)間。對(duì)在模塊上已帶了RTC單元的型號(hào),如NetBox-II、ETR100E等,BIOS在上電初始化期間已進(jìn)行了RTC對(duì)系統(tǒng)時(shí)鐘的同步操作。目前對(duì)ETR186T和ETR232i,由于不確定最終系統(tǒng)是否有RTC,所以BIOS沒(méi)有做RTC的同步操作。用戶應(yīng)用程序可以很方便的實(shí)現(xiàn)同步的操作: #include #include “ds1302.h” …… struct time t; struct date d; …… RTC.getdate( &d ); // 取RTC的日期參數(shù) RTC.gettime( &t ); // 取RTC的時(shí)間參數(shù) t.ti_hund = 0; // 設(shè)置百分秒為0 setdate( &d ); // 設(shè)置系統(tǒng)的日期 settime( &t ); // 設(shè)置系統(tǒng)的時(shí)間 注意,進(jìn)行RTC對(duì)系統(tǒng)時(shí)鐘的同步操作之前,RTC本身應(yīng)當(dāng)被正確的初始化,并設(shè)置有效的當(dāng)前時(shí)間。 以下對(duì)定時(shí)器和實(shí)時(shí)時(shí)鐘的常用方式作簡(jiǎn)單介紹。 (1) 構(gòu)造1ms – 50ms的定時(shí)任務(wù)發(fā)生器 通過(guò)啟動(dòng)定時(shí)器Timer1,并安裝中斷程序響應(yīng)Timer1記數(shù)結(jié)束事件。Timer1的輸入頻率為1MHz,即時(shí)間分辨率為1us,若設(shè)置Timer1的分頻值為1000,則定時(shí)中斷間隔1ms,若設(shè)置為10000,則定時(shí)中斷間隔為10ms。作為定時(shí)任務(wù)發(fā)生器,中斷服務(wù)程序只需設(shè)置一個(gè)全局變量標(biāo)志,而上層的應(yīng)用程序則檢查該全局變量標(biāo)志,當(dāng)標(biāo)志被設(shè)置時(shí)就執(zhí)行相應(yīng)的定時(shí)任務(wù)并清除該標(biāo)志。 不建議設(shè)置小于1ms的定時(shí)間隔,因?yàn)檫@樣會(huì)占用過(guò)多CPU開(kāi)銷。 有關(guān)Timer1定時(shí)中斷程序的安裝及應(yīng)用,請(qǐng)?jiān)贐C的IDE環(huán)境中打開(kāi)光盤中software\drivers目錄下的tmrdemo.prj,參閱相關(guān)的代碼。 (2) 構(gòu)造幾百毫秒至一兩秒的定時(shí)任務(wù)發(fā)生器 對(duì)構(gòu)造這個(gè)時(shí)間量級(jí)的定時(shí)任務(wù)發(fā)生器,最好是加載軟中斷int 0x1C,每次系統(tǒng)定時(shí)中斷將自動(dòng)調(diào)用軟中斷int 0x1C,所以int 0x1C的定時(shí)間隔就是55ms(精確值為54.925ms)。在中斷程序中可通過(guò)對(duì)一全局變量計(jì)數(shù),來(lái)表示時(shí)間間隔,而上層應(yīng)用程序則判斷該全局變量計(jì)數(shù)值來(lái)決定是否執(zhí)行定時(shí)任務(wù),如設(shè)置計(jì)數(shù)閾值為18,表示1s時(shí)間間隔,注意當(dāng)開(kāi)始執(zhí)行定時(shí)任務(wù)時(shí),需把全局變量計(jì)數(shù)值清零。 BC集成開(kāi)發(fā)環(huán)境的在線幫助中有關(guān)于如何加載int 0x1C的代碼例程,可搜索關(guān)鍵詞getvect或setvect,以打開(kāi)相關(guān)的在線幫助窗口。 (3) 整點(diǎn)時(shí)間操作 這里所謂的整點(diǎn)時(shí)間操作是指每10秒、每5分鐘、每小時(shí)等等這樣的定時(shí)任務(wù),可以通過(guò)簡(jiǎn)單的獲取系統(tǒng)時(shí)間參數(shù)來(lái)判斷是否執(zhí)行定時(shí)任務(wù)。如每10秒進(jìn)行定時(shí)操作: struct time t; unsigned char lastsecond; // 初始化相關(guān)變量 gettime( &t ); lastsecond = t.ti_sec; …… //定時(shí)任務(wù)判斷 gettime( &t ); if( (t.ti_sec != lastsecond) && ( (t.ti_sec%10) == 0) ) { lastsecond = t.ti_sec; //執(zhí)行定時(shí)任務(wù) …… } 注意由于定時(shí)操作的判斷是使用了DOS的系統(tǒng)調(diào)用,因此不能把上述代碼放在硬件中斷服務(wù)程序中,以避免中斷重入而引起系統(tǒng)crush。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:EC20系列PLC在老化房控制系統(tǒng)...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)