0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

定時器管理模塊的實現(xiàn)及在無線傳感器網(wǎng)絡中的應用

電子設計 ? 來源:單片機與嵌入式系統(tǒng)應用 ? 作者:陳曉煒,石江宏 ? 2021-05-05 09:31 ? 次閱讀

引言

定時器通信協(xié)議正常運行的基本要素之一,主要用于各種定時和幀重傳的任務。通信協(xié)議在單片機系統(tǒng)上實現(xiàn)所使用的定時器,定時精度要求不高,但數(shù)量要求比較大。由于硬件資源有限,不可能為每一個單獨任務分配一個硬件定時器,只能通過單個硬件定時器模擬多個軟件定時器的方法,來滿足協(xié)議中的定時應用需要。

用一定的數(shù)據(jù)結構將這些軟件定時器組織起來,并提供統(tǒng)一的調(diào)用接口,稱為“定時器管理”。目前定時器管理主要有2種實現(xiàn)方法:

①靜態(tài)數(shù)組法。將定時器節(jié)點存儲在數(shù)組中。優(yōu)點是邏輯簡單,占用ROM較少。但這種方案有明顯的缺點:當硬件定時器中斷發(fā)生時,要對所有定時器節(jié)點進行減法操作,時間開銷很大,且時延不確定(與定時器數(shù)目相關)。

②delta鏈表法。按照定時器的定時值升序排列,形成鏈表。后一個定時器的定時值是前面所有定時器的值加上本節(jié)點的值。這樣,在每次的時鐘中斷處理中,只需對第1個定時器節(jié)點進行減法操作,大大減少了時間開銷。但是,該方案邏輯復雜,ROM用量大,需要頻繁分配回收內(nèi)存,容易形成內(nèi)存碎片。

1 定時器管理模塊的設計

定時器管理模塊的設計基于靜態(tài)數(shù)組法。使用一個定時器節(jié)點數(shù)組來保存所有的定時請求,數(shù)組的每一項代表一個可用的定時器節(jié)點。每一個定時器節(jié)點都有一個狀態(tài)項,表示該定時器正處于空閑、使用或溢出狀態(tài)。定時器的定時值和定時器超時后要發(fā)送的消息也存儲在定時器節(jié)點中,從而實現(xiàn)用一個硬件定時器為用戶提供多個軟件定時器。

為了解決中斷處理時間開銷大的問題,在模塊中引入一個輔助定時器,輔助定時器的值總是等于所有定時器節(jié)點中的最小定時值。在硬件定時器中斷處理中,僅對輔助定時器進行減法操作,從而大大縮短了中斷處理的時間。設計原理如圖1所示。

pIYBAGCKDciAavS4AAAxJ6LrKAg978.png

2 定時器管理模塊的實現(xiàn)

2.1 數(shù)據(jù)結構和函數(shù)接口

定時器管理模塊使用的相關數(shù)據(jù)結構定義如下:

o4YBAGCKDfiAbcgBAAAjhggqwGM175.png

字段state保存了定時器節(jié)點的狀態(tài),可能取值為空閑(T_FREE)、使用 (T_INUSE)或溢出(T_OVERFLOW)。

字段count保存了定時器節(jié)點的定時值,最大取值為65 535。如果設置硬件定時器中斷為10 ms,則軟件定時器最大定時約為655 s,可以滿足大多數(shù)應用需要。

字段msg指向定時器的用戶消息。在啟動定時器時,指向消息的指針被保存在此字段。當定時時間結束后,中斷處理函數(shù)會自動發(fā)出這個消息以通知用戶任務。

由于數(shù)組的下標是唯一的,可作為識別節(jié)點的唯一ID號。下文中提到的節(jié)點ID號均表示節(jié)點在數(shù)組中的下標。

MAX_TIMER_NUM表示系統(tǒng)允許的最大定時器數(shù),其值取決于具體應用需要。

本模塊提供的關鍵接口函數(shù)如下:

pIYBAGCKDfKAfch1AAAdIdw1IWc011.png

2.2定時器的初始化

使用定時器管理模塊前,需要進行定時器的初始化。主要是初始化定時器節(jié)點數(shù)組,將每一個定時器節(jié)點設置為空閑狀態(tài),同時將輔助定時器置零,輔助ID指向0xFF(表示空)。

2.3定時器的啟動

啟動一個定時器,主要是將節(jié)點數(shù)組中一個空閑狀態(tài)的節(jié)點置為使用狀態(tài)。如果這個新啟用的定時器,是所有定時器中定時值最小的,還要更新輔助定時器。函數(shù)以指向定時器消息的指針和定時值為參數(shù),啟動定時器流程如圖2所示。成功啟動定時器后,返回該定時器節(jié)點的ID號。

o4YBAGCKDcGAHucaAABRAugQUYQ158.png

2.4定時器的刪除

在目標定時器到期之前,由于某種原因用戶可能會要求取消定時器。如重發(fā)定時器,用戶在發(fā)送數(shù)據(jù)幀后啟動該定時器,并等待對方返回響應幀。如果在定時時間結束時沒有收到響應幀,用戶就需要重發(fā)原數(shù)據(jù)幀;如果在定時時間結束之前收到響應幀,用戶就需要馬上取消該定時器,然后進行下一次通信過程。

刪除定時器函數(shù)以定時器節(jié)點ID號作為輸入?yún)?shù),將定時器節(jié)點設為空閑狀態(tài),并根據(jù)需要更新輔助定時器,流程如圖3所示。

o4YBAGCKDbuAQSSxAACgSSrd0Pc038.png

2.5定時器的驅(qū)動

軟件定時器的驅(qū)動由硬件定時器提供。在硬件定時器中斷中,首先將輔助定時器的值減1。如果輔助定時器值為0,則表示定時值最小的定時器已經(jīng)超時,應將對應的消息發(fā)送給用戶任務,將節(jié)點置為空閑狀態(tài),并重新計算其他節(jié)點的定時值,同時查找定時值最小的節(jié)點,更新輔助定時器。驅(qū)動流程如圖4所示。

關鍵代碼如下:

o4YBAGCKDeuAcIHWAABOnYTeBh0951.png

結語

本文設計的定時器管理器模塊,具有邏輯簡單、效率高的特點,在實驗室自主研發(fā)的無線傳感器網(wǎng)絡中得到應用。在共包含30個節(jié)點的溫、濕、光信息采集系統(tǒng)中,使用該定時器管理模塊的無線傳感器網(wǎng)絡協(xié)議運行高效、穩(wěn)定。

責任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8669

    瀏覽量

    151540
  • 無線傳感器
    +關注

    關注

    15

    文章

    770

    瀏覽量

    98425
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115084
收藏 人收藏

    評論

    相關推薦

    基于嵌入式網(wǎng)絡無線傳感器網(wǎng)絡平臺軟硬件實現(xiàn)

    傳感器節(jié)點發(fā)送的數(shù)據(jù)。系統(tǒng)的軟件結構  我們的無線傳感器網(wǎng)絡系統(tǒng),軟件部分主要是在
    發(fā)表于 09-15 08:15

    無線傳感器網(wǎng)絡體系結構研究

    ,例如目錄服務,資源管理、能量管理、生命周期管理?! “踩虚g件:為無線傳感器網(wǎng)絡應用業(yè)務
    發(fā)表于 03-23 14:57

    無線傳感器網(wǎng)絡的路由協(xié)議

    主要是圍繞著減少能量消耗延長網(wǎng)絡生命周期而進行設計的。無線傳感器網(wǎng)絡,路由協(xié)議不僅關心單個節(jié)
    發(fā)表于 08-07 10:26

    無線傳感器網(wǎng)絡交通領域的具體應用

    提供精確的輸入信息。通過給終端節(jié)點安裝溫濕度、光照度、氣體檢測等多種傳感器,還可以進行路面狀況、能見度、車輛尾氣污染等檢測。無線傳感器網(wǎng)絡
    發(fā)表于 11-21 17:44

    基于無線傳感器節(jié)點實現(xiàn)超長電池使用壽命

    傳感器測量和無線數(shù)據(jù)傳送只需大約30ms的時間即可完成,每分鐘測量一次時,據(jù)估算,整個系統(tǒng)電池的使用壽命為10.5年。 隨著IoT網(wǎng)絡越來越普及,這個使用納米級功耗系統(tǒng)
    發(fā)表于 09-10 11:47

    在線檢測系統(tǒng)無線傳感器網(wǎng)絡開發(fā)

    者的設置,以手機短信和電子郵件的方式提供報警信息?! ≈饕獑栴}和解決方法  1.通訊問題  無線傳感器網(wǎng)絡應用到該項目的過程,最大問題
    發(fā)表于 10-31 16:50

    基于Atmel的無線傳感器網(wǎng)絡節(jié)點的研究與實現(xiàn)

    的設計和管理提出了許多挑戰(zhàn)?! ?b class='flag-5'>無線傳感器網(wǎng)絡節(jié)點  無線傳感器
    發(fā)表于 11-15 14:55

    基于LabVIEW的無線傳感器網(wǎng)絡監(jiān)測平臺設計

    監(jiān)測平臺的后面板程序設計流程如圖4所示?! D4 無線傳感器網(wǎng)絡監(jiān)測平臺流程圖  由于此監(jiān)測平臺通過串口實現(xiàn)PC機與無線
    發(fā)表于 11-16 15:46

    無線傳感器網(wǎng)絡的拓撲結構與應用

    網(wǎng)絡的通訊體系結構  無線傳感器網(wǎng)絡實現(xiàn)需要自組織網(wǎng)絡技術,相對于一般意義上的自組織
    發(fā)表于 12-05 15:17

    自主設計的無線傳感器網(wǎng)絡監(jiān)測平臺

    無線傳感器網(wǎng)絡監(jiān)測平臺流程圖  由于此監(jiān)測平臺通過串口實現(xiàn)PC機與無線傳感器
    發(fā)表于 04-24 06:07

    無線傳感器網(wǎng)絡簡單介紹

    無線傳感網(wǎng)絡技術是典型的具有交叉學科性質(zhì)的軍民兩用戰(zhàn)略高技術,可以廣泛應用于GF軍事、國家安全、環(huán)境科學、交通管理、災害預測、醫(yī)療衛(wèi)生、制造業(yè)、城市信息化建設等領域。
    發(fā)表于 07-01 06:25

    XBee傳感器創(chuàng)建無線傳感器網(wǎng)絡的應用

    網(wǎng)絡得以與自配置和自修復的無線 Mesh 網(wǎng)絡相連接。基于 XBee 傳感器,客戶可以 ZigBee
    發(fā)表于 07-26 07:04

    無線傳感器網(wǎng)絡底層平臺由什么組成?

    提高系統(tǒng)的兼容性、穩(wěn)定性、可移植性和開發(fā)效率。本文主要研究了無線傳感器網(wǎng)絡操作系統(tǒng)的底層平臺,對無線模塊、USART、SPI、中斷和
    發(fā)表于 04-16 06:41

    怎么實現(xiàn)無線傳感器網(wǎng)絡?

    IEEE 802.15.4標準是什么?怎么實現(xiàn)無線傳感器網(wǎng)絡?無線傳感器
    發(fā)表于 05-13 06:38

    如何采用各類技術實現(xiàn)無線傳感器網(wǎng)絡節(jié)點的設計?

    無線傳感器網(wǎng)絡節(jié)點是無線傳感器網(wǎng)絡的重要組成部分,它由傳感器
    的頭像 發(fā)表于 10-10 09:36 ?783次閱讀
    如何采用各類技術<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>無線</b><b class='flag-5'>傳感器</b><b class='flag-5'>網(wǎng)絡</b>節(jié)點的設計?