久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

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不再難懂)


評論


相關推薦

技術專區

關閉