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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ATmega161在嵌入式測控網(wǎng)絡(luò)中的應(yīng)用研究

          ATmega161在嵌入式測控網(wǎng)絡(luò)中的應(yīng)用研究

          作者: 時間:2012-03-06 來源:網(wǎng)絡(luò) 收藏

          1引言

          本文引用地址:http://www.ex-cimer.com/article/171953.htm

          隨著微電子技術(shù)、通信技術(shù)、控制技術(shù)和半導(dǎo)體技術(shù)的飛速發(fā)展以及工業(yè)、醫(yī)療衛(wèi)生、國防等部門對智能控制要求的不斷提高,微處理器被越來越廣泛地。為了適應(yīng)各方面的需求,微處理器在運(yùn)算速度、可擴(kuò)充能力、系統(tǒng)可靠性、功耗和集成度等方面得到了突飛猛進(jìn)的發(fā)展。微處理器體系結(jié)構(gòu)經(jīng)歷了一個從CISC(Complex In-struction Set Computer)到RISC(Reduced Instruction SetComputer),從4位、8位、16位到32位甚至64位,尋址空間從64kB到16MB甚至更大,處理速度從0.1MIPS到2000 MIPS的過程。

          是一款基于AVR(Advanced RISC)的低功耗CMOS8位單片機(jī),它以其強(qiáng)大的功能和較高的性價比得到了不少嵌入式系統(tǒng)開發(fā)者的青睞。其主要特點(diǎn)表現(xiàn)在以下幾方面:

          (1)增強(qiáng)型RISC結(jié)構(gòu)方面
          ●內(nèi)含2周期乘法器;
          ●具有32個8位通用(工作)寄存器;
          ●工作在8MHz時,具有8MIPS的性能;
          ●具有130條指令,大多數(shù)為單周期指令;

          (2)數(shù)據(jù)和程序存儲器方面
          ●內(nèi)含16k非易失在系統(tǒng)可編程FLASH;
          ●具有1k的內(nèi)部SRAM;
          ●帶有512字節(jié)非易失在系統(tǒng)編程EEPROM;
          ●能進(jìn)行可編程程序加密。

          (3)外圍特點(diǎn)
          ●帶有兩個可編程全雙工UART;
          ●帶有主/從SPI串行接口;
          ●具有自身振蕩器的實時時鐘RTC;
          ●具有2個8位定時器/計數(shù)器;
          ●帶有1個可預(yù)分頻的具有比較、捕捉和雙8/9/10位PWM功能的16位定時器/計數(shù)器;
          ●具有可編程的內(nèi)部看門狗定時器;
          ●片內(nèi)的模擬比較器可用作A/D轉(zhuǎn)換;
          ●帶有35個可編程I/O口。

          (4)增強(qiáng)的MCU特點(diǎn)
          ●可進(jìn)行上電復(fù)位和可編程低壓檢測;
          ●具有21級內(nèi)外部中斷源;
          ●有空閑、節(jié)電及掉電三種節(jié)電模式。

          (5)其它特性
          ●采用40腳PDIP,44腳PLCC及QFP封裝;
          ●工作電壓為4.0~5.5V。

          2嵌入式測控的設(shè)計

          傳統(tǒng)的測控由于連接有很多常規(guī)模擬儀表和執(zhí)行機(jī)構(gòu)以及其它現(xiàn)場設(shè)備而具有很多缺點(diǎn),如一對一結(jié)構(gòu)連線龐雜,工程周期長,安裝費(fèi)用高,維護(hù)不便;模擬信號傳輸精度低,易受干擾;操作員在控制室既不能對其進(jìn)行參數(shù)調(diào)整,也不能對其進(jìn)行故障診斷,因而會導(dǎo)致操作的“失控”。

          所示是筆者設(shè)計的以為核心的嵌入式測控系統(tǒng)示意圖。圖中的嵌入式控制器通過兩級RS-485總線既可和上位機(jī)通信,又可和傳感器以及執(zhí)行機(jī)構(gòu)等現(xiàn)場設(shè)備進(jìn)行通信。操作人員可直接通過鍵盤、鼠標(biāo)來完成對執(zhí)行機(jī)構(gòu)的遠(yuǎn)程控制,從而實現(xiàn)實時監(jiān)控;同時,總線似的數(shù)字信號通信可以克服常規(guī)模擬信號傳輸?shù)脑S多缺點(diǎn),并具有接線簡單、維護(hù)方便、精度高、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。

          3硬件設(shè)計

          可以用兩個UART通用串行口組成兩級RS-485網(wǎng)。一般的微處理器并不具備兩個UART,通常可擴(kuò)展一片串行接口芯片(如8251、8250或者 EXAR公司的ST16C2552等)構(gòu)成兩個UART,但這樣會使電路變得復(fù)雜、PCB成本增大且系統(tǒng)的抗干擾能力下降。而ATmega161正好具有兩個可編程UART,所以無需擴(kuò)展,這種方法不但可以使電路簡化并使PCB體積縮小,而且還可使抗干擾能力增強(qiáng),同時也具有較高的性價比。

          通信部分的硬件原理圖如圖2所示。圖中,將兩個UART的RXD、TXD分別接到兩片MAX485上,以使其轉(zhuǎn)換成RS-485電平,再以數(shù)據(jù)總線的形式連接到上位機(jī)和數(shù)字化的儀器儀表以及其它現(xiàn)場設(shè)備上,從而構(gòu)成兩級測控網(wǎng)絡(luò)。

          MAX485是一種專用的RS-485/RS-422接口芯片,它具有功耗低、體積小、操作簡單方便等優(yōu)點(diǎn)。每片MAX485最多能帶32個收發(fā)器,如果要增加每條總線上收發(fā)器的個數(shù),可以換成MAX487、MAX1487(可帶128個收發(fā)器)等芯片。

          4軟件設(shè)計

          4.1通信協(xié)議

          通信協(xié)議采用ISO的OSI七層模型中的物理層、鏈路層和層。其中物理層為RS-485,它以雙絞線為傳輸總線,其最大通信距離可達(dá)1200米,最大從機(jī)個數(shù)為32臺(使用MAX485),數(shù)據(jù)傳送速率為2400b/s,數(shù)據(jù)傳輸格式為:1位起始位、8位數(shù)據(jù)位和1位停止位,該格式無奇偶校驗位,通信錯誤檢測采用累加和校驗。

          數(shù)據(jù)鏈路層可參考ISO的“高級數(shù)據(jù)鏈路層協(xié)議”(HDLC)的有關(guān)規(guī)定,并選用適合于主從網(wǎng)絡(luò)的HDLC的正常響應(yīng)操作模式(NRM),即從站只有在其受到主站的請求時才能發(fā)送信息。上位機(jī)采用輪詢的方式對嵌入式控制器進(jìn)行訪問,而控制器又對數(shù)字化傳感器及現(xiàn)場設(shè)備以輪詢的方式進(jìn)行訪問。其操作過程如圖3所示。

          嵌入式控制器在整個通信過程中具有雙重身份,即在與上位機(jī)通信過程中,上位機(jī)是主站,控制器為從站;而在與傳感器及現(xiàn)場設(shè)備的通信過程中,控制器是主站,傳感器和現(xiàn)場設(shè)備為從站。

          幀的格式定義為:幀開始符、源地址、目的地址、控制字、信息、累加和校驗(BCC)以及幀結(jié)束符。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();