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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

淺談rtimer定時(shí)器原理和rtimer移植

西西 ? 2018-02-16 10:21 ? 次閱讀

rtimer可以滿足精準(zhǔn)定時(shí)的需要,但是沒(méi)有常見(jiàn)的next指針來(lái)掛接后續(xù)節(jié)點(diǎn), 為了減少rtimer中斷掛接一個(gè)rtimer結(jié)構(gòu)是不錯(cuò)的做法,大多數(shù)定時(shí)器位寬為16位,因此rtimer的頻率必須小于30kHz。

一.rtimer用途

Contiki系統(tǒng)引入rtimer可以滿足精準(zhǔn)定時(shí)的需要,一些對(duì)時(shí)間極為敏感的模塊(如MAC協(xié)議)依賴于rtimer。和etimer的粗粒度(常見(jiàn)為100Hz)不同,rtimer是細(xì)粒度(常見(jiàn)為10kHz)定時(shí)器。根據(jù)經(jīng)驗(yàn),細(xì)粒度定時(shí)器如果中斷頻繁特別容易消耗CPU資源,為此contiki設(shè)計(jì)rtimer時(shí)盡可能地減少中斷,大部分應(yīng)用場(chǎng)合為讀取定時(shí)器計(jì)數(shù)值。

二.?dāng)?shù)據(jù)結(jié)構(gòu)

Rtimer的數(shù)據(jù)結(jié)構(gòu)如圖1所示,time賦值為下一次定時(shí)器超時(shí)中斷的時(shí)刻點(diǎn),func是定時(shí)器超時(shí)中斷的回調(diào)函數(shù),ptr是傳遞給回調(diào)函數(shù)的數(shù)據(jù)指針。

淺談rtimer定時(shí)器原理和rtimer移植

從圖1發(fā)現(xiàn),rtimer沒(méi)有常見(jiàn)的next指針來(lái)掛接后續(xù)節(jié)點(diǎn),確實(shí),contiki為了減少rtimer中斷的爆發(fā)只能掛接一個(gè)rtimer結(jié)構(gòu),如圖2所示。如果同時(shí)掛接2個(gè)或以上的rtimer結(jié)構(gòu),那么最新掛接的有效,其它的rtimer結(jié)構(gòu)將丟失,即圖3的解釋。

這種只能掛接1個(gè)rtimer的機(jī)制使設(shè)計(jì)很簡(jiǎn)單,并且硬件定時(shí)器中斷只在需要的時(shí)候才爆發(fā),極大降低了CPU負(fù)荷。當(dāng)然,它也帶來(lái)一個(gè)限制,只能串行使用rtimer定時(shí)器的中斷回調(diào)功能,即不具備排隊(duì)功能。

淺談rtimer定時(shí)器原理和rtimer移植

三.rtimer中斷時(shí)序

圖4展示了rtimer的中斷時(shí)序,當(dāng)調(diào)用rtimer_arch_schedule()時(shí),它設(shè)置rtimer定時(shí)器的中斷間隔時(shí)長(zhǎng)timeout,中斷服務(wù)程序rtimer_irq_handler會(huì)調(diào)用rtimer-》callback()回調(diào)函數(shù)。

需要特別注意2點(diǎn):中斷只允許發(fā)生一次,即rtimer_arch_schedule()使能中斷,而rtimer_irq_handler()禁止中斷;rtimer-》callback()是在中斷狀態(tài)下運(yùn)行,特別注意防止競(jìng)態(tài)錯(cuò)誤,例如,調(diào)用process_poll()合法,調(diào)用process_post()非法。

淺談rtimer定時(shí)器原理和rtimer移植

四.rtimer移植

有了上述rtimer的理論,再來(lái)移植rtimer就比較容易了,即,基于MCU實(shí)現(xiàn)rtimer-arch.c和rtimer-arch.h。

需要特別注意,大多數(shù)定時(shí)器(尤其是8位MCU)位寬為16位,即MAX=65535,而MAC協(xié)議往往需要1秒以上的定時(shí)周期,因此rtimer的頻率必須小于30kHz。一個(gè)比較好的數(shù)值是10kHz,它既可以保證比較好的精度(間隔為100us),又具備6.5秒的滿量程,這可以適應(yīng)大多數(shù)的應(yīng)用需要。

另外,大多數(shù)應(yīng)用需要隨機(jī)撤銷和重啟動(dòng)rtimer,它可以通過(guò)添加2個(gè)函數(shù)來(lái)實(shí)現(xiàn):rtimer_arch_disable_irq()和rtimer_arch_enable_irq()。

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

    關(guān)注

    23

    文章

    3234

    瀏覽量

    114358
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32定時(shí)器(二)定時(shí)器中斷

    常規(guī)定時(shí)器:基本定時(shí)器TIM6&TIM7)、通用定時(shí)器(TIM2~TIM5,TIM9~TIM14)、高級(jí)定時(shí)器(TIM1&TIM8)
    的頭像 發(fā)表于 07-21 14:54 ?4241次閱讀
    STM32<b class='flag-5'>定時(shí)器</b>(二)<b class='flag-5'>定時(shí)器</b>中斷

    淺談555定時(shí)器的原理及其應(yīng)用

    555定時(shí)器是一種應(yīng)用十分廣泛的中規(guī)模集成電路。本文扼要地分析了555定時(shí)器的基本原理,并較為詳細(xì)地介紹了用555定時(shí)器構(gòu)成的單穩(wěn)態(tài)觸發(fā)、雙穩(wěn)態(tài)觸發(fā)
    發(fā)表于 08-10 09:34 ?323次下載

    555定時(shí)器

    555定時(shí)器555定時(shí)器555定時(shí)器555定時(shí)器555定時(shí)器555定時(shí)器555
    發(fā)表于 11-10 17:25 ?52次下載

    淺談labviEW定時(shí)器

    LABVIEW提供了幾種定時(shí)器(包括DELAY)
    發(fā)表于 01-13 17:21 ?34次下載

    淺談定時(shí)器基礎(chǔ)知識(shí)與PWM輸出原理

    單片機(jī)開(kāi)發(fā)中,電機(jī)的控制與定時(shí)器有著密不可分的關(guān)系,無(wú)論是直流電機(jī),步進(jìn)電機(jī)還是舵機(jī),都會(huì)用到定時(shí)器,比如最常用的有刷直流電機(jī),會(huì)使用定時(shí)器產(chǎn)生PWM波來(lái)調(diào)節(jié)轉(zhuǎn)速,通過(guò)定時(shí)器的正交編碼
    的頭像 發(fā)表于 04-05 10:35 ?1.4w次閱讀
    <b class='flag-5'>淺談定時(shí)器</b>基礎(chǔ)知識(shí)與PWM輸出原理

    定時(shí)器電路圖工作原理(聲光提示定時(shí)器電路/555定時(shí)器電路/相片曝光定時(shí)器電路)

    定時(shí)器根據(jù)其輸入條件導(dǎo)致完成動(dòng)作的不同可分為接通延時(shí)型定時(shí)器、斷開(kāi)延時(shí)型定時(shí)器、保持型接通延時(shí)定時(shí)器、脈沖型定時(shí)器和擴(kuò)張型脈沖
    發(fā)表于 11-05 16:07 ?1.8w次閱讀
    <b class='flag-5'>定時(shí)器</b>電路圖工作原理(聲光提示<b class='flag-5'>定時(shí)器</b>電路/555<b class='flag-5'>定時(shí)器</b>電路/相片曝光<b class='flag-5'>定時(shí)器</b>電路)

    STM32定時(shí)器-基本定時(shí)器

    目錄定時(shí)器分類基本定時(shí)器功能框圖講解基本定時(shí)器功能時(shí)鐘源計(jì)數(shù)時(shí)鐘計(jì)數(shù)自動(dòng)重裝載寄存
    發(fā)表于 11-23 18:21 ?31次下載
    STM32<b class='flag-5'>定時(shí)器</b>-基本<b class='flag-5'>定時(shí)器</b>

    基于硬件定時(shí)器的軟件定時(shí)器

    概括硬件定時(shí)器很精確,軟件定時(shí)器無(wú)論如何都有延遲,主要用在不需要精確定時(shí)的地方,而且軟件定時(shí)比較浪費(fèi)單片機(jī)資源。梳理講到定時(shí)器,大家多多少少
    發(fā)表于 11-25 09:51 ?8次下載
    基于硬件<b class='flag-5'>定時(shí)器</b>的軟件<b class='flag-5'>定時(shí)器</b>

    STM32——高級(jí)定時(shí)器、通用定時(shí)器、基本定時(shí)器的區(qū)別

    STM32——高級(jí)定時(shí)器、通用定時(shí)器、基本定時(shí)器的區(qū)別
    發(fā)表于 11-26 15:21 ?110次下載
    STM32——高級(jí)<b class='flag-5'>定時(shí)器</b>、通用<b class='flag-5'>定時(shí)器</b>、基本<b class='flag-5'>定時(shí)器</b>的區(qū)別

    STM32定時(shí)器學(xué)習(xí)---基本定時(shí)器

    STM32F1系列的產(chǎn)品,除了互聯(lián)網(wǎng)產(chǎn)品外,工作8個(gè),3種定時(shí)器,其中一種就是基本定時(shí)器。那么STM32單片機(jī)的基本定時(shí)器如何操作以及編程呢?下面我們就來(lái)詳細(xì)的了解一下STM32F1系列的產(chǎn)品,除了
    發(fā)表于 12-02 14:06 ?27次下載
    STM32<b class='flag-5'>定時(shí)器</b>學(xué)習(xí)---基本<b class='flag-5'>定時(shí)器</b>

    SysTick 定時(shí)器

    的SysTick定時(shí)器來(lái)實(shí)現(xiàn)延時(shí),可以不占用系統(tǒng)定時(shí)器,節(jié)約資源。由于SysTick是在CPU核內(nèi)部實(shí)現(xiàn)的,跟MCU外設(shè)無(wú)關(guān),因此它的代碼可以在不同廠家之間移植。本 章 將 使用系統(tǒng)滴答定時(shí)器
    發(fā)表于 12-05 14:51 ?9次下載
    SysTick <b class='flag-5'>定時(shí)器</b>

    31章-定時(shí)器

    基本定時(shí)器TIMSTM32F1 系列中,除了互聯(lián)型的產(chǎn)品,共有8 個(gè)定時(shí)器,分為基本定時(shí)器,通用定時(shí)器和高級(jí)定時(shí)器?;?/div>
    發(fā)表于 01-17 09:39 ?3次下載
    31章-<b class='flag-5'>定時(shí)器</b>

    定時(shí)器開(kāi)關(guān)怎么接線?

    定時(shí)器開(kāi)關(guān):時(shí)間定時(shí)器開(kāi)關(guān)、開(kāi)關(guān)定時(shí)器、電源開(kāi)關(guān)定時(shí)器,是控制用電器自動(dòng)定時(shí)開(kāi)啟、關(guān)閉的電氣裝置。
    的頭像 發(fā)表于 02-24 15:38 ?9826次閱讀
    <b class='flag-5'>定時(shí)器</b>開(kāi)關(guān)怎么接線?

    基礎(chǔ)定時(shí)器實(shí)驗(yàn)

    STM32內(nèi)部共有8個(gè)定時(shí)器,其中Timer1和Timer8屬于高級(jí)定時(shí)器,Timer2~Timer5屬于通用定時(shí)器,8個(gè)定時(shí)器的資源獨(dú)立,互不影響。
    的頭像 發(fā)表于 03-01 15:59 ?1135次閱讀
    基礎(chǔ)<b class='flag-5'>定時(shí)器</b>實(shí)驗(yàn)

    什么是軟件定時(shí)器?軟件定時(shí)器的實(shí)現(xiàn)原理

    軟件定時(shí)器是用程序模擬出來(lái)的定時(shí)器,可以由一個(gè)硬件定時(shí)器模擬出成千上萬(wàn)個(gè)軟件定時(shí)器,這樣程序在需要使用較多定時(shí)器的時(shí)候就不會(huì)受限于硬件資源的
    的頭像 發(fā)表于 05-23 17:05 ?2652次閱讀