基于嵌入式系統的定時器裝置及定時方法
【技術領域】
[0001] 本發明涉及一種基于嵌入式系統的定時器裝置及定時方法,具體闡述了嵌入式系 統控制器的定時器裝置的設計方法及應用層定時器算法。
【背景技術】
[0002] 隨著工業自動控制技術的規模化發展,控制過程中多任務、多層次的復雜控制要 求向各工業控制系統提出了新的挑戰。要使系統穩定、可靠地運行,控制內容常常要求控制 系統延時或定時向外設發出各種不同的控制信號,以滿足不同時序、不同功能的控制要求。 因此,需要控制系統具有多個相互獨立而又標準相同的定時器來實現控制功能。
[0003] 嵌入式系統集成了輸入輸出口、RS232和485通信串口,是一款功能豐富的一體控 制器(以下簡稱控制器)。其硬件系統結構精簡、內核小、成本低、靈活方便且實時性高,已逐 漸發展成為嵌入式系統開發研究中的主流部件。然后,控制器有可供用戶使用的相互獨立 的定時器,例如timerO~4,除此之外,若控制系統還要求實現其他更多的延時、定時功能, 則多是通過使用for函數進行一定次數的空循環來達到延時、定時效果,這種方式不但定時 時間難以精確判定,而且在延時時間未結束時,CPU始終停留在延時功能程序段內,不會掃 描其他程序段內容,可見,這種定時方式不僅占用了大量系統內存,還拖慢了 CPU處理事件 的時間進程。然而,由于硬件資源的限制,不可能為每一個定時應用單獨配置一個硬件定時 器。這種有限的定時器個數和日益復雜的自動控制要求之間的矛盾,無疑成了控制器在嵌 入式開發領域中發展的泮腳石。為了解決這個問題,本文提出一種基于嵌入式系統的定時 器的設計方法,基于ADS編譯器在單個硬件定時器的基礎上創建多個定時器,以實現在硬件 資源有限的情況下滿足多點同時定時的控制要求。
【發明內容】
[0004] 本發明涉及一種基于嵌入式系統的軟件定時器設計,針對工業控制過程中經常需 要在不同之處同時使用定時功能,而嵌入式系統中有的相互獨立的定時器,例如timerO~ 4,提出一種基于嵌入式系統的軟件定時器的設計方法。
[0005] 本發明公開了一種基于嵌入式系統的定時器設計方法,包括定時啟動、運行、停止 三個階段,分別對應軟件定時系統的請求定時模塊、數據處理模塊和定時器休眠模塊。三個 階段分別由不同的API函數完成。
[0006] -種基于嵌入式系統的定時器裝置,包括:定時器、請求定時模塊、時間數據處理 模塊和定時器休眠模塊,其中:
[0007] 請求定時模塊用于接收控制系統的定時請求,根據該請求創建定時請求信號,并 向時間數據處理模塊發送定時請求信號;
[0008] 時間數據處理模塊,用于接收請求定時模塊發來的定時請求信號,讀取定時器的 當前定時參數,然后根據時間差值算法對定時器的定時時長進行實時檢測判斷,當定時時 長達到預定定時時長時,創建定時結束信號,并將其傳遞給控制系統和定時器休眠模塊;
[0009] 定時器休眠模塊用于接收時間數據處理模塊發來的定時結束信號,根據該信號清 除相應的定時請求信號,為下一次定時請求做初始化準備。
[0010] 所述的定時器裝置,優選的:
[0011] 所述定時器包括遞減計數器和定時計數緩沖寄存器,
[0012] 時間數據處理模塊包括定時中斷次數計數器、計數結束標志位、中斷溢出位、中斷 溢出計數器;
[0013]所述定時請求信號包括:①定時器編號T_num,②預定定時時*C_time,③定時初 始參數P_init;
[0014] 所述時間數據處理模塊對定時器的定時時間進行實時檢測包括,實時讀取當前定 時參數P_curt,然后根據時間差值算法對定時時長進行實時檢測判斷:時間差值=當前定 時參數-初始定時參數,當時間差值大于等于請求的定時時長,即A =P_curt-P_init 2 C_ time時,定義"計數結束"標志變量?_〖即為T,并輸出給控制系統;
[0015] 所述中斷溢出位?_#在定時中斷次數計數器的計數值未發生溢出時為0,發生溢 出時置為1。
[0016] 所述的定時器裝置,優選的:
[0017]所述定時初始參數P_init和當前定時參數?_〇111~1:都是結構體變量,P_init包括定 時器遞減計數器的初始計數值P_〇,定時中斷次數計數器的初始計數值P_C0以及中斷溢出 計數器的初始計數值P_0C0; P_curt包括定時器遞減計數器的當前計數值?_1:,定時中斷次 數計數器的當前計數值?_(^以及中斷溢出計數器的當前計數值P_0Ct。
[0018] 所述的定時器裝置,優選的:請求信號發出后,請求定時模塊將計數結束標志位中 的標志變量F_tup設為"0",每接收一個脈沖遞減計數器的值P_t減1,每當P_t減為0時,定時 器向時間數據處理模塊發送信號,根據該信號,定時中斷次數計數器的計數值P_Ct的值加 1,定時計數緩沖寄存器中的值自動重載到遞減計數器中;iP_Ct的值達到其上限值P_Climit 時,中斷溢出計數器的計數值P_〇Ct加1,時間數據處理模塊將中斷溢出位置1,同時將P_ct 清零。
[0019] 所述的定時器裝置,優選的:所述時間數據處理模塊按如下方式對定時器的定時 時長進行計算:
[0020] l)iF_of = 0時,表示定時器中斷次數累計沒有發生溢出,當前定時時長按如下公 式計算:
(1) (2)
[0023] 2)iF_of=l時,表示定時器中斷次數累計有溢出現象發生,當前時間長度計算公 式如下式: (3)
[0025] 其中:
(奪)
[0026] 式(1)、(2)、(3)和(4)中:
[0027] Tbase表示定時器的時間計數time base,即定時計數緩沖寄存器中用于自動重載 到遞減計數器中的值;設控制系統定時器中斷頻率為Tirpt,則Tbase按式(5)計算:
(5)
[0029] P_Climit表示定時參數P_C不發生溢出的最大極限值;
[0030] 此外,用T0表示初始定時參數、Tt表示當前定時參數、上角標表示結構體成員編 號、下腳標表示數組成員編號。
[0031] 根據計算式(1)和(3)計算出An值后,做下式判斷:
[0032] A n > C_time (6)。
[0033 ] -種基于嵌入式系統的定時器方法,包括如下步驟:
[0034] 接收控制系統的定時請求,根據該請求創建定時請求信號,并發送定時請求信號;
[0035] 接收定時請求信號,讀取定時器的當前定時參數,然后根據時間差值算法對定時 器的定時時長進行實時檢測判斷,當定時時間達到預定定時時長時,倉ll建定時結束信號,并 將其傳遞給控制系統;
[0036]接收定時結束信號,根據該信號清除相應的定時請求信號,為下一次定時請求做 初始化準備。
[0037]所述的定時器裝置,優選的:
[0038] 所述定時器包括遞減計數器和定時計數緩沖寄存器,
[0039]所述定時請求信號包括:①定時器編號T_num,②預定定時時*C_time,③定時初 始參數P_init;
[0040] 對定時器的定時時長進行實時檢測包括,實時讀取當前定時參數P_curt,然后根 據時間差值算法對定時時長進行實時檢測判斷:時間差值=當前定時參數-初始定時參數, 當時間差值大于等于預定的定時時長,即A =P_cu