RTOS Salvo在單片機中的應用-遙控LED點陣安全天顯示屏_第1頁
RTOS Salvo在單片機中的應用-遙控LED點陣安全天顯示屏_第2頁
RTOS Salvo在單片機中的應用-遙控LED點陣安全天顯示屏_第3頁
RTOS Salvo在單片機中的應用-遙控LED點陣安全天顯示屏_第4頁
RTOS Salvo在單片機中的應用-遙控LED點陣安全天顯示屏_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、RTOS Salvo在單片機中的應用遙控LED點陣安全天顯示屏l 什么是RTOS?實時操作系統(tǒng)(real-time operating system)簡稱RTOS。l Salvo是什么?Salvo是一個能運行在有限的ROM和RAM的單片機上的強大的、高性能的、只需要很少的RAM而不需要堆棧的實時操作系統(tǒng)。它容易使用,能夠幫助你為嵌入式系統(tǒng)快速開發(fā)出強大的、可靠的且易于維護的應用程序。它可裁剪,適應能力非常強,幾乎能用于任何處理器,從PIC到奔騰。l 為什么要使用Salvo?Salvo提供一個強大的、彈性的框架,在它上面你能快速地構建你的程序。如果你面對一個復雜的設計并且性能有限的處理器,Sal

2、vo能最大程度地幫助你完成設計。如果你想:使你的嵌入式產品搶在競爭對手前頭在你的產品已有硬件基礎上添加更多的軟件功能改進一個復雜設計的運轉實時性管理你的越來越復雜的程序提高你的程序的可靠性使你掌握多任務RTOS大多數(shù)傳統(tǒng)的單片機程序都是在主函數(shù)部分中構建一個超級循環(huán),使用中斷處理臨界事件。這被稱作前后臺或超級循環(huán)系統(tǒng),中斷運行在前臺,當沒有中斷產生時主循環(huán)運行在后臺。在對程序的維護上,隨著功能的增加,使得前臺與后臺之間的關系越來越復雜,維護越來越困難。RTOS宏觀上是多個任務同時運行,內部任務之間使用信號量、消息和消息隊列進行通訊和資源共享,增加一個功能只需增加一個任務,任務的運行由系統(tǒng)內核管

3、理,使得維護變得容易。低成本的單片機是有能力實現(xiàn)實時控制應用的,但對它們編程是一個挑戰(zhàn),實時的內核能夠簡化復雜軟件的設計,然而不幸的是,多數(shù)商業(yè)化的RTOS需要大量的ROM和RAM,Salvo改變了這些,Salvo將使你的程序運行的更快,它提供給你一個明白而又容易理解的多任務程序框架,只用很少的空間完成你的工作。l Salvo與其它的RTOS的不同點1、 Salvo是一個并發(fā)式的RTOS,因此必須明確地管理任務的切換,每個任務必須至少進行一次上下文切換。2、 只能在任務中而不能在函數(shù)中進行上下文切換,這是因為單片機的堆棧很小。3、 對比其它需要大量RAM的并發(fā)式或搶占式RTOS,Salvo可能

4、是你唯一的選擇。l Salvo需要哪些資源?在單片機上,一個典型的多任務程序,Salvo代碼可能需要占用大約1K ROM每個任務大約占用4-12個字節(jié),每個事件3-4個字節(jié)另外需要4-6個字節(jié)去管理所有的任務、事件和延時。如果你計劃使用延時和超時服務,Salvo需要提供一個中斷信號,但這個中斷信號不必專門給Salvo使用,也同時用于其它方面。任務和事件的數(shù)量僅僅受內存的限制。l 使用Salvo需要哪些知識?1、C語言的知識,但即使你是一C語言的初學者,你學習Salvo也不應該感到很困難。2、一些RTOS的基本知識。下面結合一個實際進行介紹,本設計使用一片AVR單片機ATmega16,它是meg

5、a系列的主流型號,性價比高,具有16K的flash,512字節(jié)的EEPROM,1K字節(jié)的RAM,沒有擴展外部了ROM和RAM便可運行RTOS,完成點陣掃描和紅外線遙控調整時間、安全天數(shù)。顯示內容:“今天是:xxxx年xx月xx日星期x xx時xx分,當前氣溫xx.x已安全運行:xxxx天?!睆挠蚁蜃罅鳚L動顯示。一、硬件的組成及工作原理(1)CPU控制板:原理見圖一,以ATmega16為核心,擴展一片416譯碼器CD4514,驅動ULN2003完成LED的行掃描。實時時鐘由DS1302及3.6V充電電池組成,掉電時時鐘仍能工作。J3是ISP程序下載接口,J4是程序調試接口,J8是外接調整按鈕,不

6、用遙控器也能手動調整參數(shù),J5是一體化紅外線接收頭。ATmega16具有硬件的SPI接口,可直接驅動串行移位芯片74HC595。(2)LED顯示板:原理見圖二,由16塊8*8LED點陣拼結而成,可同時顯示4個漢字,8片74HC595完成顯示屏的列驅動。兩塊電路板之間用40芯的排線聯(lián)接,在CPU的內部RAM開辟一塊顯示緩存區(qū),CPU控制板讀取flash內部的漢字點陣編碼,寫入到顯示緩存區(qū),然后讀取顯存中第一行數(shù)據(jù),通過SPI接口驅動74HC595,將串行數(shù)據(jù)轉為并行,然后將接通對應的行,顯示1ms后,取下一行的數(shù)據(jù),同樣顯示1ms,直到第16行,完成一次掃描。再把顯存中的數(shù)據(jù)整體左移一位,再掃描

7、一遍。如此把全部的漢字依次移入顯存并顯示,便實現(xiàn)了漢字從右向左移,全部漢字移完后對時間、溫度和安全天數(shù)的寄存器刷新一次。二、程序的基本結構首先,根據(jù)功能上的獨立性劃分任務,分為:時間讀寫、溫度采集、LED掃描顯示、日期天數(shù)調整和被調參數(shù)閃爍等五個任務。其次確定任務的優(yōu)先級,時間讀寫、溫度采集8級,日期天數(shù)調整和被調參數(shù)閃爍5級,LED掃描顯示3級,任務的優(yōu)先級還可以在程序運行中動態(tài)的改變。/頭文件#include salvo.h./定義Salvo任務指針#define TASK_SHOW_P OSTCBP(1)#define TASK_RWTIME_POSTCBP(2)./定義任務切換標簽_O

8、SLabel(TaskAdjust1)./任務的定義void TaskRWTime(void);/讀寫時間任務./被調整的位置閃爍任務偽代碼void TaskFlash(void)static const struct eng0816 *p;p=eng0816_code;for(;)/程序段是一個死循環(huán)if(stop!=8)程序代碼;OS_Delay(50,TaskFlash2);/進行上下文切換,交出CPU的使用權,其它任務開始運行。任務等待50個時鐘節(jié)拍(500ms)后,如果沒有比它優(yōu)先級高的任務等待執(zhí)行,則此任務繼續(xù)運行elseOS_Delay(100,TaskFlash3);/讀寫時間

9、任務void TaskRWTime(void)for(;)ReadTime();/讀DS1302時間CountSafeDay();/計算安全運行的天數(shù),存儲在內部EEPROM中OS_Delay(50,TaskRWTime1);/每個任務必須進行一次上下文切換/主程序void main(void) Initial();/用戶程序初始化 OSInit();/RTOS初始化,必須有/創(chuàng)建任務并分配優(yōu)先級,括號內分別為:任務名稱,任務指針,任務優(yōu)先級OSCreateTask(TaskRWTime,TASK_RWTIME_P,8);. OSEi();/中斷使能 for(;) OSSched(); /任務

10、調度器,何時哪一個任務運行,由調度器來調度,用戶只需要定義好每個任務的優(yōu)先級即可 /end從上面的程序片段可以看出,RTOS與一般的前后臺程序的主要不同是每個任務(即子程序)都工作在一個無限循環(huán)中,用戶只要做好任務的一些初始化工作,至于什么時候運行什么任務這個煩瑣事情交給系統(tǒng)去做就可以了,使CPU的利用率最高。三、使用方法遙控器用的是成品電視機遙控器,工作原理與電子制作2003年第九期“遙控電風扇”一文相同。按電源鍵,顯示“調年xxxx”同時被調整的位閃爍,按音量“”相應的位向上加,加到9后,回到0。按頻道“”,則改變被調整的位,同時對應的位閃爍。再次按電源鍵,依次顯示“調月xx”,“調日xx”

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論