新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ATmega161在嵌入式測控網絡中的應用研究

        ATmega161在嵌入式測控網絡中的應用研究

        作者: 時間:2012-03-06 來源:網絡 收藏

        在實際的通信過程中,往往會出現數據丟失和數據傳輸錯誤等通信故障。為了防止數據丟失,系統采用了超時處理的方法。這樣,主站發送查詢命令后,如果在預定的時間內沒有收到從站的響應信號,可再次發送一幀查詢命令,以等待對方響應。如果連續三次發送后,主站仍然沒有收到正確的響應,系統將退出并報警,同時開始輪詢下一從站。

        針對數據出錯情況,每幀都增加了累加和校驗來對源地址、目的地址、控制字和信息段進行邏輯和運算,并將運算結果作為幀結束前的一個字符傳送到接收方,而接收方在接收完該幀信息后也將接收到的源地址、目的地址、控制字和信息段作邏輯和運算,如果運算結果和收到的運算結果不一致,則廢棄該幀數據。如果接收到通信協議規定之外的控制字、源地址或目的地址,系統也將廢棄該幀數據。

        4.2 的雙UART寄存器設置

        如前所述,帶有兩個全雙工的可編程通用異步收發器UART。用戶可通過設置表1中的9個寄存器來對兩個UART進行編程,表內括號中的十六進制數為相應的寄存器地址。

        38.jpg

        以UART0為例,UDR0是兩個物理分離的數據寄存器,它們具有相同的I/O地址,但在讀/寫時,它們將分別訪問不同的寄存器。在兩個狀態控制寄存器中,UCSR0A的格式為:

        39.jpg

        其中,RXC0為接收完成標志,TXC0為發送完成標志,UDRE0為數據寄存器空標志,FE0為幀出錯標志,OR0為超越出錯標志,U2X0為雙倍傳輸速度標志,MPCM0為多處理器通信標志位。另一個狀態控制寄存器UCSR0B的格式為:

        該格式中的RXCIE0為接收完成中斷觸發位,TXCIE0為發送中斷觸發位,UDRIE0為數據寄存器空中斷觸發位,RXEN0為接收允許,TXEN0為發送允許,CHR90為九位數據標志位,RXB80為收到的數據第8位,TXB80為發送的數據第8位。

        UBRRHI的低四位和UBRR0分別為波特率寄存器的高位和低位。波特率寄存器的計算公式為:40.jpg

        式中,Fck為晶振頻率,BAUD為波特率,UBRR為寄存器中應取的值。

        UART1的設置編程與UARTO基本相同。

        4.3部分源代碼

        可以使用匯編語言或ANSIC語言編寫源代碼(編譯軟件均可從INTERNET上免費下載),編譯生成HEX目標文件后,可以通過高速下載線經由SPI接口將該目標文件下載到的FLASH存儲器中。

        下面是C語言源代碼的一部分:

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 孟州市| 鄂托克前旗| 洛扎县| 镇赉县| 丘北县| 永嘉县| 修文县| 克拉玛依市| 桃源县| 梅河口市| 泸州市| 循化| 洪洞县| 广丰县| 江津市| 西乌| 哈密市| 循化| 光泽县| 怀宁县| 宁都县| 宿州市| 康保县| 恭城| 巫溪县| 长丰县| 景宁| 津市市| 军事| 新兴县| 通化市| 凭祥市| 涿州市| 兴业县| 彰化市| 武穴市| 长寿区| 峨山| 新平| 漳州市| 庆云县|