<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM7的RTU微控制器的設計

          基于ARM7的RTU微控制器的設計

          作者: 時間:2011-02-14 來源:網絡 收藏

          (4)等待數據發(fā)送結束時間T3:有些通信設備帶有數據緩沖區(qū),當數據從串口發(fā)送給通信設備時,不是立即就將數據發(fā)送出去,而是先暫存在數據緩沖區(qū),此時如果立即關閉設備電源,可能有數據沒有發(fā)送完,所以需要一個等待時間。

          (5)設備關電時機:當T3 結束后,立即關閉設備的電源。

          實際編程時T1 的值根據具體的設備的數據手冊來確定;T3 的值也需要根據具體的設備來調試,以接收端能準確可靠的接收到數據,T3 的值最小為準。

          4.2 CPU 核的功耗管理

          CPU 核在沒有任務可做時要進入低功耗狀態(tài)STOP 模式,在程序中通過空閑任務連續(xù)運行狀態(tài)來判定。當所有的任務都不運行時,操作系統(tǒng)會自動運行空閑任務,當空閑任務連續(xù)運行超過一定的時間后(超過程序中需要的最大等待時間),關閉所有的外設,讓CPU進入STOP 模式。具體的實現(xiàn)是將原有的空閑任務程序進行修改,增加一個記數器,當記數到一定的數值(即一定的時間)后,進入STOP 模式。

          修改后的OS_TaskIdle 程序如下:

          void OS_TaskIdle (void *pdata)

          {

          #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */

          OS_CPU_SR cpu_sr;

          #endif

          pdata = pdata;

          for (;;)

          {

          OS_ENTER_CRITICAL();

          OSIdleCtr++;

          OS_EXIT_CRITICAL();

          Count = count +1;

          If (count > 某個數值)

          { 將CPU 進入STOP 模式;

          }

          OSTaskIdleHook();

          }

          }

          由于空閑任務隨時可能被別的任務搶先,當重新執(zhí)行空閑任務時,如接著搶先點繼續(xù)執(zhí)行,全局變量COUNT 沒有被清零,所以在每個任務開始運行或執(zhí)行結束后,都需要對COUNT 清零,這樣可以保證COUNT 重新記數,在FOR 循環(huán)語句中,當COUNT 記數到一定值,CPU 將進入STOP 模式。

          5 結束語

          經過試運行后,功耗滿足要求,靜態(tài)功耗小于500μA/12V,在采用10AH 的蓄電池加太陽能板(容量靈活組合),可以保證系統(tǒng)無日照50 天正常工作。由于采用了μCOS-II 操作系統(tǒng),并編寫了硬件驅動程序的內核接口和用戶接口,使程序具有良好的移植性,也方便了應用程序開發(fā)人員編寫程序。

          本文作者創(chuàng)新點:提出了一種 和μCOSII 的 低功耗方案。采用 處理機,又根據 設備工作特點了電源功耗管理軟件,實現(xiàn)了RTU 高的處理能力、低的功耗及長時間的電池供電。

          可大規(guī)模應用在全國水情測報系統(tǒng)中,將會有500 萬以上的經濟效益。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();