定時(shí)器是裝有時(shí)段或時(shí)刻控制機(jī)構(gòu)的開(kāi)關(guān)裝置。它有一個(gè)頻率穩(wěn)定的振蕩源,通過(guò)齒輪傳動(dòng)或集成電路分頻計(jì)數(shù),當(dāng)將時(shí)間累加到預(yù)置數(shù)值時(shí),或指示到預(yù)置的時(shí)刻處,定時(shí)器即發(fā)送信號(hào)控制執(zhí)行機(jī)構(gòu)。
定時(shí)器根據(jù)工作原理可以為以下:
1、接通延時(shí)型定時(shí)器:接通延時(shí)型定時(shí)器是各種PLC中最常見(jiàn)最基本的定時(shí)器,這種定時(shí)器在SIEMENS的PLC中,稱為SD型定時(shí)器
2、斷開(kāi)延時(shí)型定時(shí)器:這種定時(shí)器是當(dāng)輸入條件00000為ON時(shí)無(wú)延時(shí)作用,只有在輸入條件00000為OFF時(shí)產(chǎn)生延時(shí)作用。在SIEMENS的PLC中,稱為SF型定時(shí)器
3、保持型接通延時(shí)定時(shí)器:這種定時(shí)器是當(dāng)輸入條件00000為ON后,即產(chǎn)生鎖存功能,即使輸入條件00000又變?yōu)镺FF,仍視輸入條件為ON,當(dāng)定時(shí)器的當(dāng)前值等于設(shè)定值時(shí),定時(shí)器動(dòng)作,這種定時(shí)器在SIEMENS的PLC中,稱為SS型定時(shí)器
4、脈沖型定時(shí)器:這種定時(shí)器是當(dāng)輸入條件00000為ON后,定時(shí)器即時(shí)動(dòng)作,但經(jīng)過(guò)定時(shí)器所設(shè)定的時(shí)間后,即使輸入條件00000仍為ON,定時(shí)器卻變?yōu)镺FF狀態(tài)。即這種定時(shí)器ON狀態(tài)的維持時(shí)間是由設(shè)定值決定的。如果00000為ON的時(shí)續(xù)時(shí)間小于定時(shí)器的設(shè)定值,定時(shí)器的ON狀態(tài)維持時(shí)間為輸入條件00000為ON的持續(xù)時(shí)間。這種定時(shí)器在SIEMENS的PLC中,稱為SP型定時(shí)器。
5、擴(kuò)張型脈沖定時(shí)器:這種定時(shí)器與脈沖型定時(shí)器的區(qū)別是,只要輸入條件00000出現(xiàn)了ON狀態(tài),不管其持續(xù)時(shí)間多長(zhǎng),均可使定時(shí)器為ON的維持的時(shí)間與定時(shí)器的設(shè)定值一致。這種定時(shí)器在SIEMENS的PLC中,稱為SE型定時(shí)器。
定時(shí)器按結(jié)構(gòu)可分為機(jī)械式、電動(dòng)式和電子式:
1、機(jī)械式定時(shí)器 以發(fā)條為原動(dòng)力,用擒縱調(diào)速器控制走時(shí)精度,通過(guò)齒輪傳動(dòng)和凸輪,按時(shí)間控制機(jī)構(gòu)預(yù)置的時(shí)段操縱執(zhí)行機(jī)構(gòu)動(dòng)作。計(jì)時(shí)精度要求不高的定時(shí)器(如風(fēng)扇定時(shí)器、洗衣機(jī)定時(shí)器、廚房用定時(shí)器、照相暗房用定時(shí)器、電視機(jī)控制用定時(shí)器、電燈開(kāi)關(guān)定時(shí)器),一般采用無(wú)固有振動(dòng)周期的調(diào)速器。這些定時(shí)器都是在手動(dòng)上發(fā)條的同時(shí)預(yù)置時(shí)限,定時(shí)精度不高,但結(jié)構(gòu)簡(jiǎn)單,使用方便。計(jì)時(shí)精度要求高、定時(shí)范圍在3~12小時(shí)的定時(shí)器,一般采用擺輪游絲調(diào)速器。
2、電動(dòng)式定時(shí)器 用交流同步電動(dòng)機(jī)或石英步進(jìn)電機(jī)驅(qū)動(dòng),通過(guò)齒輪傳動(dòng)和凸輪簧片觸點(diǎn)機(jī)構(gòu),按預(yù)置的時(shí)段或時(shí)刻控制執(zhí)行機(jī)構(gòu)。其中短時(shí)段控制的電動(dòng)式定時(shí)器可用于程序控制式洗衣機(jī)、洗碗機(jī)、微波爐、烘箱及時(shí)間繼電器等;長(zhǎng)時(shí)段電動(dòng)式定時(shí)器是一種24小時(shí)或7天程序控制的開(kāi)關(guān)裝置,可預(yù)置開(kāi)關(guān)動(dòng)作多次,最短時(shí)間控制間隔一般為15分鐘,可用于用戶用電情況監(jiān)控、照明控制、實(shí)驗(yàn)室裝置控制、空調(diào)器控制和自動(dòng)生產(chǎn)線上某些設(shè)備的定時(shí)控制等。
3、電子式定時(shí)器 利用石英振蕩器或民用交流電的標(biāo)準(zhǔn)頻率,經(jīng)過(guò)分頻計(jì)數(shù)組成時(shí)間累加器或數(shù)字鐘,按照預(yù)置的時(shí)間編碼輸出控制信號(hào)。這種定時(shí)器走時(shí)精確,時(shí)間設(shè)定沒(méi)有誤差,定時(shí)精度高,控制程序多。其中長(zhǎng)時(shí)段定時(shí)器最小控制時(shí)段一般為1分鐘,配上微處理器后能精確地編制一年的時(shí)間程序,組成多路可編程序的定時(shí)器。電子式定時(shí)器在工業(yè)自動(dòng)化控制系統(tǒng)中應(yīng)用廣泛,它也是節(jié)約能源管理中一種有效的技術(shù)措施。電子定時(shí)器類的電子定時(shí)開(kāi)關(guān)鐘,可用于按高、平、低峰用電收取不同電費(fèi)制度的場(chǎng)合,它將一天內(nèi)的用電高峰、平峰、低谷時(shí)間在定時(shí)開(kāi)關(guān)中設(shè)定,并分別接通3種電表進(jìn)行計(jì)費(fèi)。電子式定時(shí)器在科學(xué)實(shí)驗(yàn)中和在微波爐、電飯鍋、洗衣機(jī)等電器中也有使用
F2810/F2812器件上有3個(gè)Q9位CPU定時(shí)器(TIMERO/1/2)。只有定時(shí)器1和2預(yù)留給實(shí)時(shí)操作系統(tǒng)DSP/BIOS使用,只有定時(shí)器0可以在就用程序中使用,定時(shí)器的功能如圖1所示。
圖1定時(shí)器功能框圖
若處理器采用30MHz的外部時(shí)鐘,經(jīng)過(guò)鎖相環(huán)10/2倍頻后,系統(tǒng)的時(shí)鐘工作在150MHz。圖中的定時(shí)器選擇SYSCLKOUT作為定時(shí)器時(shí)鐘,工作頻率也是150MHz。一旦定時(shí)器被使能(TCR-Bit4=0),定時(shí)器時(shí)鐘經(jīng)過(guò)預(yù)定標(biāo)計(jì)數(shù)器(PSCH:PSC)遞減計(jì)數(shù),預(yù)定標(biāo)計(jì)數(shù)器產(chǎn)生下溢后向定時(shí)器的32位計(jì)數(shù)器(TIMH:TIM)借位p定時(shí)器計(jì)數(shù)器產(chǎn)生溢出使定時(shí)器向CPU發(fā)送中斷。定時(shí)器中斷結(jié)構(gòu)如圖2所示。
每次預(yù)定標(biāo)計(jì)數(shù)器產(chǎn)生溢出后使用分頻寄存器(TDDRH:TDDR)中的值重新裝載。同樣,32位周期寄存器(PRDH[_]PRD)為32位計(jì)數(shù)器提供重新裝載值。
圖2定時(shí)器中斷結(jié)構(gòu)
每個(gè)通用定時(shí)器都有一個(gè)比較寄存器TxCMPR和一個(gè)PWM輸出引腳TxPWM。通用定時(shí)器計(jì)數(shù)器的值一直與相關(guān)的比較寄存器的值比較,當(dāng)定時(shí)器計(jì)數(shù)器的值與比較寄存器的值相等時(shí),就產(chǎn)生比較匹配??赏ㄟ^(guò)TxCON[l]位使能比較操作,產(chǎn)生比較匹配后將會(huì)有下列操作(如圖所示)。
●匹配1個(gè)時(shí)鐘周期后,定時(shí)器的比較中斷標(biāo)志位置位。
●匹配1個(gè)CPU時(shí)鐘周期后,根據(jù)寄存器GPTCONA/B相應(yīng)位的配置情況,PWM的輸出將產(chǎn)生跳變。
●如果比較中斷標(biāo)志位已通過(guò)設(shè)置寄存器GPTCONA/B中的相應(yīng)位啟動(dòng)A/D轉(zhuǎn)換器,則比較中斷位置位的同時(shí)產(chǎn)生A/D轉(zhuǎn)換啟動(dòng)信號(hào)。
●如果比較中斷未被屏蔽,將產(chǎn)生一個(gè)外設(shè)申斷申請(qǐng)。
圖通用定時(shí)器比較操作功能框圖
1前言單片機(jī)內(nèi)部一般有若干個(gè)定時(shí)器。如8051單片機(jī)內(nèi)部有定時(shí)器0和定時(shí)器1。在定時(shí)器計(jì)數(shù)溢出時(shí),便向CPU發(fā)出中斷請(qǐng)求。當(dāng)CPU正在執(zhí)行某指令或某中斷服務(wù)程序時(shí),它響應(yīng)定時(shí)器溢出中斷往往延遲一段時(shí)間。這種延時(shí)雖對(duì)單片機(jī)低頻控制系統(tǒng)影響甚微,但對(duì)單片機(jī)高頻控制系統(tǒng)的實(shí)時(shí)控制精度卻有較大的影響,有時(shí)還可能造成控制事故。為擴(kuò)大單片機(jī)的應(yīng)用范圍,本文介紹它的定時(shí)器溢出中斷與CPU響應(yīng)中斷的時(shí)間誤差、補(bǔ)償誤差的方法和實(shí)例。
2誤差原因、大小及特點(diǎn)產(chǎn)生單片機(jī)定時(shí)器溢出中斷與CPU響應(yīng)中斷的時(shí)間誤差有兩個(gè)原因。一是定時(shí)器溢出中斷信號(hào)時(shí),CPU正在執(zhí)行某指令;二是定時(shí)器溢出中斷信號(hào)時(shí),CPU正在執(zhí)行某中斷服務(wù)程序。
2.1.CPU正在執(zhí)行某指令時(shí)的誤差及大小由于CPU正在執(zhí)行某指令,因此它不能及時(shí)響應(yīng)定時(shí)器的溢出中斷。當(dāng)CPU?qǐng)?zhí)行此指令后再響應(yīng)中斷所延遲的最長(zhǎng)時(shí)間為該指令的指令周期,即誤差的值為執(zhí)行該指令所需的時(shí)間。由于各指令都有對(duì)應(yīng)的指令周期,因此這種誤差將因CPU正在執(zhí)行指令的不同而不同。如定時(shí)器溢出中斷時(shí),CPU正在執(zhí)行指令MOVA,Rn,其誤差為1個(gè)機(jī)器周期。而執(zhí)行指令MOVRn,direct時(shí),其誤差為2個(gè)機(jī)器周期。當(dāng)CPU正在執(zhí)行乘法或除法指令時(shí),時(shí)間誤差可達(dá)4個(gè)機(jī)器周期。在8051單片機(jī)指令系統(tǒng)中,多數(shù)指令的指令周期為1~2個(gè)機(jī)器周期,因此時(shí)間誤差一般為1~2個(gè)機(jī)器周期。若振蕩器振蕩頻率為fosc,CPU正在執(zhí)行指令的機(jī)器周期數(shù)為Ci,則時(shí)間誤差為Δtmax1=12/fosc×Ci(us)。例如fosc=12MHZ,CPU正在執(zhí)行乘法指令(Ci=4),此時(shí)的時(shí)間誤差為:Δtmax1=12/fosc×Ci=12/(12×106)×4=4×10-6(s)=4(μs)
2.2CPU正在執(zhí)行某中斷服務(wù)的程序時(shí)的誤差及大小定時(shí)器溢出中斷信號(hào)時(shí),若CPU正在執(zhí)行同級(jí)或高優(yōu)先級(jí)中斷服務(wù)程序,則它仍需繼續(xù)執(zhí)行這些程序,不能及時(shí)響應(yīng)定時(shí)器的溢出中斷請(qǐng)求,其延遲時(shí)間由中斷轉(zhuǎn)移指令周期T1、中斷服務(wù)程序執(zhí)行時(shí)間T2、中斷返回指令的指令周期T3及中斷返回原斷點(diǎn)后執(zhí)行下一條指令周期T4(如乘法指令)組成。中斷轉(zhuǎn)移指令和中斷返回指令的指令周期都分別為2個(gè)機(jī)器周期。中斷服務(wù)程序的執(zhí)行時(shí)間為該程序所含指令的指令周期的總和。因此,時(shí)間誤差Δtmax2為:Δtmax2=(T1+T2+T3+T4)12/fosc=(2+T2+2+4)12/fosc=12(T2+8)/fosc若設(shè)fosc=12MHZ,則時(shí)間誤差為:Δtmax2=12(T2+8)/fosc=12(T2+8)/12×106=(T2+8)×10-6(s)=T2+8(μs)。由于上式中T2一般大于8,因此,這種時(shí)間誤差一般取決于正在執(zhí)行的中斷服務(wù)程序。當(dāng)CPU正在執(zhí)行中斷返回指令RETI、或正在讀寫IE或IP指令時(shí),這種誤差在5個(gè)機(jī)器周期內(nèi)。
2.3誤差非固定性特點(diǎn)定時(shí)器溢出中斷與CPU響應(yīng)中斷的時(shí)間誤差具有非固定性特點(diǎn)。即這種誤差因CPU正在執(zhí)行指令的不同而有相當(dāng)大的差異。如CPU正在執(zhí)行某中斷服務(wù)程序,這種誤差將遠(yuǎn)遠(yuǎn)大于執(zhí)行一條指令時(shí)的誤差。后者誤差可能是前者誤差的幾倍、幾十倍、甚至更大。如同樣只執(zhí)行一條指令,這種誤差也有較大的差別。如執(zhí)行乘法指令MULAB比執(zhí)行MOVA,Rn指令的時(shí)間誤差增加了3個(gè)機(jī)器周期。這種誤差的非固定不僅給誤差分析帶來(lái)不便,同時(shí)也給誤差補(bǔ)償帶來(lái)困難。
3誤差補(bǔ)償方法由于定時(shí)器產(chǎn)生溢出中斷與CPU響應(yīng)中斷請(qǐng)求的時(shí)間誤差具有非固定性,因此,這種誤差很難用常規(guī)方法補(bǔ)償。為此,本文介紹一種新方法?,F(xiàn)介紹該方法的基本思路、定時(shí)器新初值及應(yīng)用情況。
3.1基本思路為使定時(shí)器溢出中斷與CPU響應(yīng)中斷實(shí)現(xiàn)同步,該方法針對(duì)中斷響應(yīng)與中斷請(qǐng)求的時(shí)間誤差,對(duì)定時(shí)器原有的計(jì)數(shù)初值進(jìn)行修改,以延長(zhǎng)定時(shí)器計(jì)數(shù)時(shí)間,從而補(bǔ)償誤差。在該方法中,當(dāng)定時(shí)器溢出中斷得到響應(yīng)后,即停止定時(shí)器的計(jì)數(shù),并讀出計(jì)數(shù)值。該計(jì)數(shù)值是定時(shí)器溢出后,重新從OOH開(kāi)始每個(gè)機(jī)器周期繼續(xù)加1所計(jì)的值。然后,將這個(gè)值與定時(shí)器的停止計(jì)數(shù)時(shí)間求和。若在定時(shí)器原計(jì)數(shù)初值中減去這個(gè)和形成新計(jì)數(shù)初值,則定時(shí)器能在新計(jì)數(shù)初值下使溢出中斷與CPU響應(yīng)中斷實(shí)現(xiàn)同步,從而達(dá)到誤差的補(bǔ)償要求。
3.2定時(shí)器新計(jì)數(shù)初值若定時(shí)器為計(jì)數(shù)方式,操作方式為1,則計(jì)數(shù)器初值X0=216-t0×fosc/12。式中fosc為振蕩器的振蕩頻率。t0為需要定時(shí)的時(shí)間,也為中斷的間隔時(shí)間。X0為定時(shí)器原計(jì)數(shù)初值。在對(duì)定時(shí)器溢出中斷與CPU響應(yīng)中斷時(shí)間誤差進(jìn)行補(bǔ)償時(shí),定時(shí)器的新計(jì)數(shù)初值X1為:X1=216-t3×fosc/12t3=t0+t1+t2式中t0為中斷間隔時(shí)間。t1為定時(shí)器停止計(jì)數(shù)時(shí)間,該時(shí)間為定時(shí)器停止計(jì)數(shù)到重新啟動(dòng)計(jì)數(shù)之間所有程序指令周期數(shù)的總和。t2為定時(shí)器溢出中斷后,重新從OOH開(kāi)始直至計(jì)數(shù)器停止時(shí)計(jì)的值。在誤差補(bǔ)償中,若將定時(shí)器計(jì)數(shù)初值X1取代X0,則可使定時(shí)器下次的溢出中斷與CPU響應(yīng)中斷實(shí)現(xiàn)同步。
3.3實(shí)例要求補(bǔ)償定時(shí)器每1ms產(chǎn)生一次溢出中斷時(shí)的中斷響應(yīng)延遲的誤差。若振蕩器振蕩頻率fosc=12MHZ,定時(shí)器工作在計(jì)數(shù)方式,工作模式為1,則補(bǔ)償中斷響應(yīng)時(shí)間誤差時(shí)的定時(shí)器新初值X1為:X1=216-t3×fosc/12=216-(t0+t1)-t2=216-(1000+13)-t2誤差補(bǔ)償程序?yàn)椋骸埃茫蹋遥牛?;關(guān)CPU中斷1CLRTRi;停止定時(shí)器計(jì)數(shù)2MOVR0,#OOH;R0清零3MOVR0,#LOW(216);定時(shí)器計(jì)數(shù)值的低8位送R04MOVA,R05SUBBA,#LOW(1000+13);216的低8位減去(t0+t1)的低8位送累加器A6SUBBA,TLi;216的低8位減去(t0+t1+t2)的低8位送TLi7MOVTLi,A8MOVR0,#OOH;R0清零9MOVR0,#HIGH(216);216的高8位送R010MOVA,R011SUBBA,#HIGH(1000+13);216的高8位減去(t0+t1)的高8位送A12SUBBA,THi;216的高8位減去(t0+t1+t2)的高8位送A13MOVTHi,A14SETBTRi;重新啟動(dòng)定時(shí)器……在上式和上段程序中,由于fosc=12MHZ,中斷間隔時(shí)間為1ms,因此t0的機(jī)器周期數(shù)為1000。由于第1條指令到第14條指令的指令周期的機(jī)器周期數(shù)之和為13,因此,t1為13個(gè)機(jī)器周期。CPU雖在執(zhí)行條指令CLRTRi后停止定時(shí)器計(jì)數(shù),但在TLi、THi中分別保存了t2的低位數(shù)據(jù)和高位數(shù)據(jù)。4結(jié)束語(yǔ)由于本文介紹的誤差補(bǔ)償方法能對(duì)定時(shí)器溢出中斷與CPU響應(yīng)中斷的非固定性時(shí)間誤差進(jìn)行有效補(bǔ)償,因此,該方法對(duì)于提高高頻控制系統(tǒng)實(shí)時(shí)控制精度和擴(kuò)大單片機(jī)應(yīng)用范圍都有較高的實(shí)用價(jià)值。
Copyright ? mingxiaow.com All Rights Reserved. 杭州優(yōu)配網(wǎng)絡(luò)科技有限公司 版權(quán)所有 未經(jīng)書面允許不得轉(zhuǎn)載、復(fù)制信息內(nèi)容、建立鏡像
本網(wǎng)站內(nèi)容僅供參考,請(qǐng)以各學(xué)校實(shí)際情況為主!內(nèi)容侵權(quán)或錯(cuò)誤投訴:841539661@qq.com 工信部備案號(hào):浙ICP備20019715號(hào)