新闻中心

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


评论


相关推荐

技术专区

关闭