ATmega161在嵌入式测控网络中的应用研究
地址、目的地址、控制字、信息、累加和校验(BCC)以及帧结束符。
在实际的通信过程中,往往会出现数据丢失和数据传输错误等通信故障。为了防止数据丢失,系统采用了超时处理的方法。这样,主站发送查询命令后,如果在预定的时间内没有收到从站的响应信号,可再次发送一帧查询命令,以等待对方响应。如果连续三次发送后,主站仍然没有收到正确的响应,系统将退出并报警,同时开始轮询下一从站。
针对数据出错情况,每帧都增加了累加和校验来对源地址、目的地址、控制字和信息段进行逻辑和运算,并将运算结果作为帧结束前的一个字符传送到接收方,而接收方在接收完该帧信息后也将接收到的源地址、目的地址、控制字和信息段作逻辑和运算,如果运算结果和收到的运算结果不一致,则废弃该帧数据。如果接收到通信协议规定之外的控制字、源地址或目的地址,系统也将废弃该帧数据。
4.2 ATmega161的双UART寄存器设置
如前所述,ATmega161带有两个全双工的可编程通用异步收发器UART。用户可通过设置表1中的9个寄存器来对两个UART进行编程,表内括号中的十六进制数为相应的寄存器地址。
以UART0为例,UDR0是两个物理分离的数据寄存器,它们具有相同的I/O地址,但在读/写时,它们将分别访问不同的寄存器。在两个状态控制寄存器中,UCSR0A的格式为:
其中,RXC0为接收完成标志,TXC0为发送完成标志,UDRE0为数据寄存器空标志,FE0为帧出错标志,OR0为超越出错标志,U2X0为双倍传输速度标志,MPCM0为多处理器通信标志位。另一个状态控制寄存器UCSR0B的格式为:
该格式中的RXCIE0为接收完成中断触发位,TXCIE0为发送中断触发位,UDRIE0为数据寄存器空中断触发位,RXEN0为接收允许,TXEN0为发送允许,CHR90为九位数据标志位,RXB80为收到的数据第8位,TXB80为发送的数据第8位。
UBRRHI的低四位和UBRR0分别为波特率寄存器的高位和低位。波特率寄存器的计算公式为:
式中,Fck为晶振频率,BAUD为波特率,UBRR为寄存器中应取的值。
UART1的设置编程与UARTO基本相同。
4.3部分源代码
可以使用汇编语言或ANSIC语言编写源代码(编译软件均可从INTERNET上免费下载),编译生成HEX目标文件后,可以通过高速下载线经由SPI接口将该目标文件下载到ATmega161的FLASH存储器中。
下面是C语言源代码的一部分:
5结束语
事实证明,用ATmega161构成的嵌入式控制器在构成两级测控网络时具有明显的性价比优势,在现场总线(如LONWORKS、CAN等)仍然还比较昂贵的情况下,可以作为DCS向FCS的过渡产品。因为该网络具有数字化的特点,加上RS-485标准在国内已经非常流行,所以具有良好的扩展性和通用性,完全可以满足现场控制和远程监控的要求,可广泛应用于各类测控系统中。
- 基于DSP的音频会议信号合成算法研究(05-10)
- 基于定点DSP的MP3间频编码算法研究(07-04)
- DSP的并联电力有源滤波器的仿真研究(02-15)
- PCI总线数据采集系统的硬件研究(09-12)
- PIC单片机在温度测量领域的应用及仿真研究(11-23)
- 嵌入式软PLC 的设计与研究(06-27)