www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 消費電子 > 消費電子
[導讀]為了控制Arduino的隨機睡眠與喚醒,不采用“預定睡眠-隨機喚醒”的常規(guī)設計模式,而是通過一個外部中斷隨機使Arduino進入睡眠,并且通過同一個外部中斷隨機喚醒Arduino。首先使用開源Enerlib和LowPower庫對ArduinoPro Mini進行實驗,然后應用于實際的工程設計中,取得了很好的效果。該方法可以作為成熟的方案推廣到工程設計的實際應用當中。

摘要:為了控制Arduino的隨機睡眠與喚醒,不采用“預定睡眠-隨機喚醒”的常規(guī)設計模式,而是通過一個外部中斷隨機使Arduino進入睡眠,并且通過同一個外部中斷隨機喚醒Arduino。首先使用開源Enerlib和LowPower庫對ArduinoPro Mini進行實驗,然后應用于實際的工程設計中,取得了很好的效果。該方法可以作為成熟的方案推廣到工程設計的實際應用當中。

引言

“預定睡眠-隨機喚醒”是嵌入式系統(tǒng)設計中常用的方法。例如,在完成規(guī)定的數據發(fā)送或接收任務后,MCU立即進入休眠以節(jié)約電力,這就是“預定睡眠”的含義;當有新的數據發(fā)送和接收任務時,通過各種方式喚醒MCU執(zhí)行前述任務,這就是“隨機喚醒”的含義。在實際工程中,完成該功能主要使用軟件,首先整合系統(tǒng)功能,執(zhí)行完功能模塊后馬上執(zhí)行預定的睡眠指令,而喚醒功能則直接在中斷服務程序中體現。很多教科書、論壇中廣泛介紹的也都是這種方法,該方法能夠滿足一般工程設計的需要。但“預定睡眠”在某些工程中并不適合使用,例如在無線傳感網絡構成的系統(tǒng)中,某個節(jié)點或分系統(tǒng)的睡眠時機不是由自己決定的,而是遠程隨機控制的。在這種情況下,睡眠指令在節(jié)點或分系統(tǒng)執(zhí)行自己任務的過程中隨機發(fā)生,同樣,喚醒指令發(fā)出也是隨機的,通常為節(jié)省系統(tǒng)的硬件開支并提高其可靠性,發(fā)出睡眠和喚醒指令使用同一個信號,所以系統(tǒng)軟件的睡眠指令就不能固定在系統(tǒng)功能程序的預定位置,甚至不能在功能主程序及其調用的函數中出現。

1 目前Arduino睡眠與喚醒的方法

在Arduino IDE中控制Arduino睡眠的工具主要有Enerlib和LowPower兩種開源類庫,前一種已被Arduino開源庫收錄,這兩種類庫專門完成 Arduino的睡眠控制。Arduino的睡眠效果和典型應用在參考文獻中有詳細的介紹,但也未涉及到隨機進入睡眠的方法。

1.1 使用Enerlib類庫的實現方法

Enerlib類庫提供的Example代碼說明了如何使用該類庫的功能函數,為閱讀方便起見,筆者添加了行號標識和中文注釋,如下所列:

可以看出,進入睡眠的代碼在僅執(zhí)行一次的初始化模塊void setup()中,表明系統(tǒng)啟動后做完初始化工作即進入睡眠。代碼的19~23行給出了5種睡眠方式,在實際應用中選擇一種適合的方式即可。系統(tǒng)的喚醒在 Int0外部中斷服務程序中,Enerlib類庫提供了一個只能在中斷服務程序中使用的WasSleeping()函數,以判定系統(tǒng)目前的“睡眠/醒著” 的狀態(tài),該程序執(zhí)行一次睡眠,然后隨機喚醒后不能再次進入睡眠狀態(tài)。這是一個典型的“預定睡眠一隨機喚醒”實例。

1.2 使用LowPower類庫的實現方法

LowPower類庫提供的實例代碼如下(行號和中文注釋由筆者添加):

可以看出,進入睡眠的代碼在主程序循環(huán)體void loop()內,系統(tǒng)啟動后即進入休眠狀態(tài),一旦有外部中斷即喚醒,喚醒后執(zhí)行完主程序功能后再次進入睡眠,這也是典型的“預定睡眠-隨機喚醒”實例。

因ATMega單片機在外部中斷模式下會忽略引起中斷引腳的數據方向,所以該例程第10行“pinMode(wake UpPin,INPUT);”沒有必要。

以上兩種睡眠與喚醒實例均實現不了隨機進入睡眠的功能要求。

2 隨機睡眠與喚醒的方法

如果可以實現在系統(tǒng)工作過程中隨時中止工作進入睡眠(如為了節(jié)省電力而遠程控制終止節(jié)點的監(jiān)測),然后在適當的時機再喚醒系統(tǒng)繼續(xù)工作,就是典型的“隨機睡

眠-隨機喚醒”功能。

2.1 隨機進入睡眠與喚醒的方法

在以上兩個實例中,一個是將睡眠指令放于初始化模塊,實現一次性主動睡眠;另一個是將睡眠指令放在主程序循環(huán)體中,在執(zhí)行完預定功能后主動進入睡眠,二者均有外部隨機喚醒。如果要實現通過外部指令(中斷)隨機進入睡眠,睡眠指令首先不能放在初始化模塊void setup()中,因為這樣僅會引起一次睡眠;如果放到主程序循環(huán)體void loop()中,則必須在由“睡眠/喚醒”指令引起的中斷服務程序中放置相應的標志,然后再在主程序中判斷這個標志,勢必增加相應的軟件開支,而且程序的結構也不明晰。

因此,實現隨機進入睡眠的最簡單的方法就是將睡眠指令直接置于中斷服務程序當中,當睡眠指令發(fā)出后,執(zhí)行中斷服務程序進入睡眠;當喚醒指令發(fā)出后,只要進入了中斷服務程序即可喚醒。但是在同一個中斷服務程序中實現該功能,需要透徹地了解相應單片機的中斷處理機制以及所用的庫函數對中斷的處理方法。

2.2 Arduino的外部中斷

構成Arduino的核心處理器主要是Atmel的AVR ATmega系列MCU(如ATmega328),常用的實驗平臺有UNO、NANO、Pro、Pro Mini、Micro、Lilypad、Leonardo、Duemilanove等,因此Arduino的睡眠與喚醒的控制實質是對MCU的控制,也就是控制ATnaega328睡眠與喚醒。

實現隨機睡眠與喚醒的實驗平臺是Arduino Pro Mini3.3 V、8 MHz/ATInega328,ATrnega328的外部中斷機制主要有:①RESET具有最高的優(yōu)先級,第二個為INT0;②任一中斷發(fā)生時全局中斷使能位被清零,從而禁止了所有其他的中斷;③退出中斷后,總是回到主程序并至少執(zhí)行一條指令才可以去執(zhí)行其他被掛起的中斷;④如果選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷,如果選擇低電平觸發(fā)方式,那么低電平必須保持到當前指令執(zhí)行完成;⑤外部中斷通過引腳INT0、INT1與INT2觸發(fā),只要使能中斷且電平發(fā)生了合適的變化,即使引腳INT0~2配置為輸出,中斷也會觸發(fā);⑥若要求INT0與INT1在信號下降沿或上升沿觸發(fā),則I/O時鐘必須工作;⑦通過電平方式觸發(fā)中斷,在將MCU從掉電模式喚醒時,要保證電平保持一定的時間,以降低MCU對噪聲的敏感程度;⑧中斷響應時間最少為4個時鐘周期,若中斷發(fā)生時MCU處于休眠模式,中斷響應時間還需增加4個時鐘周期,此外還要考慮到不同的休眠模式所需要的啟動時間。

2.3 Enerlib和LowPower類庫的中斷處理方式

兩個類庫中,Enerlib的5種睡眠指令為PowerDown()、Standby()、PowerSave()、SleepADC()、Idle(),LowPower的5種睡眠方式為ADC_OFF、BOD_OFF、IDLE_OFF、STANDBY EXT_STANDBY,除了對各種不同設備進行關斷外,對系統(tǒng)中斷的處理方式均相同,即睡眠前后均不對中斷的使能進行處理,而且均提供了打開和關閉終端使能的函數。這樣,打開和關閉中斷的時機就完全交給了開發(fā)者。

3 隨機睡眠與喚醒的實現與結果

使用Arduino自帶的LED(Pin13驅動)來檢驗隨機睡眠與喚醒,睡眠發(fā)生時LED閃爍0.1 s,表示接收到睡眠命令,然后熄滅LED進入睡眠;喚醒發(fā)生時LED閃爍0.1 s,表示接收到喚醒命令,然后LED以1 Hz頻率閃爍工作。以下代碼筆者添加了行號標識和中文注釋。

將Arduino Pro Mini的Pin2(D2)通過一個10 KΩ電阻連接到Vcc,然后在Pin2對地連接一個按鍵開關,下載完程序后上電,系統(tǒng)LED進入1 Hz閃亮模式,按一下按鍵,LED閃爍0.1 s,然后進入睡眠;再按一下按鍵,LED閃爍0.1 s,然后系統(tǒng)LED進入1 Hz閃爍模式,如此重復。

結語

Arduino的核心--ATmega系列單片機,以其RISC的可靠結構、主控板、外圍模塊等硬件的規(guī)范設計,具有較高的可靠性。Arduino之所以風靡全球,除了開源的硬件之外,更重要的是配套了開發(fā)軟件的IDE以及眾多的類庫,同時IDE集成、定義了編程方法,底層的Bootloader就像是個微型操作系統(tǒng),而不像使用Keil C開發(fā)單片機軟件那樣自己來組織程序的結構、編寫驅動程序,Arduino的軟件和硬件設計使得編程、供電、下載一體化。由于其遵循開源共享的宗旨,相關類庫會越來越豐富,也正是這個IDE將軟件開發(fā)工具和實際硬件隔離,使得軟件開發(fā)變得簡單、快速,開發(fā)者可以專注于方案的實施。當然也由于軟件底層與功能模塊硬件的隔離,使得開發(fā)者越來越依賴類庫,這一循環(huán)導致開發(fā)者過分依賴類庫而不去探究問題的實質,最后導致問題得不到解決或者退而更換主控系統(tǒng)硬件,從而妨礙了Arduino更大范圍的應用。本文所敘述的例程可以根據實際工程要求做適當修改而直接應用,具有一定的參考價值。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉