單片機分時複用

來源:互聯網
上載者:User

作為嵌入式系統主控單元——單片機,其軟體往往是一個微觀的即時作業系統,且大部分是為某種應用而專門設計的。系統程式有即時過程式控制制或即時資訊處理的能力,要求能夠及時響應隨機發生的外來事件並對該事件做出快速處理。而分時作業系統卻是把CPU的時間劃分成長短基本相同的時間區間,即“時間片”,通過作業系統的管理,把這些時間片依次輪流地分配給各個使用者使用。如果某個作業在時間片結束之前,整個任務還沒有完成,那麼該作業就被暫停下來,放棄CPU,等待下一輪迴圈再繼續做。此時CPU又分配給另一個作業去使用。由於電腦的處理速度很快,只要時間片的間隔取得適當,那麼一個使用者作業從用完分配給它的一個時間片到獲得下一個CPU時間片,中間有所“停頓”;但使用者察覺不出來,好像整個系統全由它“獨佔”似的。分時作業系統主要具有以下3個特點:① 多路性。使用者通過各自的終端,可以同時使用一個系統。② 及時性。使用者提出的各種要求,能在較短或可容忍的時間內得到響應和處理。③ 獨佔性。在分時系統中,雖然允許多個使用者同時使用一個CPU,但使用者之間操作獨立,互不干涉。

  分時作業系統主要是針對小型機以上的電腦提出的。一般而言,微處理器(MPU)驅動的通用電腦,系統設計人員對每一台的最終具體應用都是不得而知的,因此,在價格允許的情況下,硬體設計務求CPU時鐘儘可能的快;計算及管理能力儘可能的強;程式和資料存放區器的容量儘可能的大;各種電腦外設的配接儘可能的詳盡等等,特別是採用分時作業系統的機器,因為是一機多使用者的管理系統,它的要求就更高了。相對而言,微控制器(MCU)俗稱單片機,是一個單片整合系統,它將這些或那些電腦所需的外設,諸如程式和資料存放區器、連接埠以及有關的子系統整合到一片晶片上。從硬體上,單片機系統與採用分時作業系統的電腦系統是無法比擬的。但是,在單片機系統的設計中,設計人員對其最終具體應用是一清二楚的,它的使用環境相對是單一固定的。所控制的過程的可預見性為分時系統思想的實現提供了可能性。具體一點就是:雖然單片機的CPU速度較低,但其任務是可預見的,這樣作業調度將變得簡單而無須佔用很多的CPU時間,同時“時間片”的設計是具體而有針對性的,因此可變得很有效。

一、 單片機分時系統的設計

  單片機系統往往是一個嵌入式的控制系統,因此目前絕大部分的單片機系統還是一即時系統。能夠真正體現分時系統的設計思想的往往是那些多路重複資料偵測控制系統。即便是在這些多路重複資料偵測控制系統中,它的即時性也是非常重要的。也就是說,在單片機系統中應用了分時系統設計思想,但其及時性應首先進行考慮。

1. 對單片機分時系統硬體設計的建議

  隨著單片機效能的提高,單片機系統設計中的一些硬體功能軟體化是大勢所趨。但同時,一日千裡的晶片技術也為低成本的硬體完成高效能的功能提供可能。讓一種功能到底是通過硬體實現還是通過軟體來實現不能一概而論,只能是通過系統設計讓整個系統的效能價格比最高才是每個單片機系統設計者孜孜追求的目標。

  在單片機分時系統的硬體設計中,由於對系統的及時性的要求不能降低,而大多數單片機的處理速度相對而言是較慢的。因此,在介面硬體的設計上應採用一些能將資訊量保持的器件,如觸發器、鎖存器。同時要求這些器件應該是三態門輸出,因為是多路分時系統,當CPU沒有訪問到時,器件輸出呈現高阻,以利於匯流排對其他器件的訪問。還有,一些用軟體比較費時的操作應轉給硬體完成。如LED動態顯示,沒有必要一定用intel 8155或intel 8255硬體介面讓軟體時時為顯示數字而煞費苦心,完全可以用intel 8279或MAX7218及MAX7219這些可程式化外圍器件來完成,使顯示既漂亮又簡單。當然,到底哪些功能留給硬體完成,哪些功能留給軟體完成,應根據系統的不同而具體設計。總之,應總體考慮,追求最高的效能價格比。

2. 單片機分時系統的軟體設計

  為了合理實現單片機分時系統,還須有完善的調度機制。完善的調度機制主要由調度指標和調度表組成。系統的調度分成兩級,一是“路”的調度,相當於指示程式橫向進行:從第一路的某一作業到第二路的某一作業,從第二路的某一作業再到第三路的某一作業……從最後一路回到第一路,迴圈往複。“路”調度的調度指標變化規律是固定不變的,演算法簡單,即遞增一或遞減一,迴圈到頭後,再返回到起始。相對應的“路”調度指標還應構造“路”調度表。“路”調度表每一項表示各“路”程式入口地址及跳轉指令。以MCS-51單片機為例,採用AJMP addr11作為每一項的內容,則調度表的每一表項佔2個位元組;當程式較長超過2K位元組,則採用LJMP addr16作為每一項內容,佔3個位元組。所設計的單片機系統共有多少“路”,該調度表就有多少項數。二是作業調度,即相當於指示程式縱向進行:從某一路的第一作業指向該路第二作業,第二作業指向第四作業……也有從第六作業指回第三作業的等等。因稍複雜任務的流向都不可能是單方向性的,從上一作業流到下一作業都要根據系統的檢測或運算結果來決定,因此作業調度指標的變化是隨機決定的。作業調度表的構成形式與“路”調度表相同,每一項表示各作業模組的程式入口地址及跳轉指令。作業調度表指示出各作業執行的一般先後次序,表項數等於一路任務的最大作業數。為了分清每路的任務進程,單片機系統要控制多少路就必須有多少個作業調度指標及相應作業調度表。以上兩級指標都為1個位元組的整數變數。調度指標與調度表的聯絡是通過指令JMP @A+DPTR實現的。DPTR中是調度表的首地址。累加器A中的內容是調度指標的整數倍,若表項內容是AJMP addr11,則A的值為調度指標乘2;若表項內容是LJMP addr16,則A的值為調度指標乘3。

  除了以上主程式的調度設計外,各個作業中共同的功能應放在中斷中實現,主要是放在定時器中斷。如計時功能應放在定時器定時中斷中實現,定時參數的選擇應考慮到系統各個作業中各種計時的要求,定時頻率一般為最小計時頻率的整數倍。任何軟體延時都是不允許的。 實現分時控制的關鍵是在於合理地將系統的功能分解成各個作業模組。作業模組分得越細系統的即時性就越好。雖然單片機的時鐘頻率較低,在實際應用中當各個作業模組被細分成各個“動作”及簡單的運算後,分時系統的即時性是能得到保證的。缺點就是各“路”的控制處理常式被分割得支離破碎,模組化得不到保證。

二、 應用執行個體

1. 系統硬體及工作原理

  賓館用的ApsaraVideo for VOD系統VOD(Video On Demand)中,從各個機定盒送出的上行訊號用DTMF碼通過電話線傳輸到機房的主控制櫃中的上行訊號採集卡中。為了能同時接受多個使用者的點播操作,上行訊號採集卡必須有接受多路電話傳輸資訊的功能,為此,筆者設計了8路電話採集卡,可同時接受8路使用者的點播操作,系統硬體框圖1所示。

 

   圖1 電話採集卡硬體框圖

  每路大致的主程式是:檢測到響鈴訊號後(即為響鈴檢測腳變低並保持8ms以上),繼電器吸合,同時馬上給機定盒回一接通訊號——#鍵(保持400ms)。然後等待機定盒發送點播資訊:客房號、點播的節目號,共4位DTMF碼;若1s內無DTMF碼收到(收到表示為解碼晶片的DV腳變高)表示操作有誤,繼電器斷開,狀態位複原,作業指標回0。收齊4位DTMF碼後將其整理並帶上該路的標誌,轉化成3位元組送到串列發送緩衝區,在定時器中斷服務程式中發送。等待視頻伺服器回送應答資訊,根據應答資訊不同向機定盒回送不同的資訊;若逾時無應答也向機定盒回送一碼(發碼時間都為100ms)。最後,繼電器斷開,狀態標誌複原,緩衝區清0,作業指標也回到0。一個過程完成。

 

2. 作業流程

  為了能實現8路分時工作,最主要的工作是將這一過程細分成一個個作業。筆者通過設計把它分成8個作業,各作業的流程2所示。 以上每一作業返回後,“路”指標自動加1,到8後回到0,以保證分時工作合理。

圖2 各作業流程

3. 幾點技巧

  8路電話資訊採集卡的編程中,為了使程式更精練,筆者應用以下3個技巧:

① 因為這8路的工作是相同的,程式可以共用,只須再構造1“路”地址表,每一表項含有本路的輸入鎖存器地址、輸出鎖存器地址、DTMF碼存放RAM地址、計時單元地址。這樣可以省掉“路”調度表,因為各路相同作業的入口地址是相同的。根據“路”指標的不同,帶入該“路”的地址表項,即可用相同的程式對8路分別控制操作。

② 定時器中斷設定成4ms一次,這是因為電話響鈴是25Hz,檢測腳保持低電平的時間為10ms,它是最低的計時值。當響鈴檢測腳低電平保持時間少於8ms時可認為是幹擾。每一路都有自己的計時單元,每次定時器中斷後,在定時服務自程式中各路計時單元自動加1。在上一次作業中將計時單元請0,下一次作業讀出計時單元的值,延時值即為該值乘以4ms。這樣任何延時都不佔用CPU機時。

③ 串列資料的發送和接收是8路共有的操作,採用共同的模組。資料的連結是通過開闢緩衝區實現的,有發送緩衝區和接收緩衝區,採用4800baud的傳輸速率。一般程式的串列資料發送時,都須要檢測TI位的變化來判斷1位元組資料發送是否完成,由此決定可否發下一位元組資料。應用到分時系統是行不通的,這要佔用CPU機時,因為採用4800baud的傳輸速率,則每一位元組的發送時間少於4ms。當發送緩衝區有資料時,可在定時器中斷服務自程式中發送。每一次定時中斷中發送1位元組資料,當下一次定時中斷來時,上一位元組資料必定已發送完畢,可發送下一位元組資料。無須檢測TI位,也不佔用CPU機時。資料接收採用串列中斷,接收到的資料存放到接收緩衝區供各路查詢。

結論

  將分時作業系統的思想引入單片機系統,提出了一個針對多路檢測控制的單片機系統軟體編程。大大減低了系統的設計成本,提高了系統的效能價格比,並在實際應用中獲得成功。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.