微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR单片机(学习ing)-ATMEGA16的USART与PC机串行通信

AVR单片机(学习ing)-ATMEGA16的USART与PC机串行通信

时间:11-27 来源:互联网 点击:

4)接受错误标志

USART 接收器有三个错误标志::帧错误(FE)、数据溢出(DOR) 及奇偶校验错(UPE)。它
们都位于寄存器UCSRA。错误标志与数据帧一起保存在接收缓冲器中。由于读取UDR
会改变缓冲器, UCSRA 的内容必须在读接收缓冲器(UDR) 之前读入。错误标志的另一
个同一性是它们都不能通过软件写操作来修改。 但是为了保证与将来产品的兼容性,对
执行写操作是必须对这些错误标志所在的位置写"0“。所有的错误标志都不能产生中断。
帧错误标志(FE) 表明了存储在接收缓冲器中的下一个可读帧的第一个停止位的状态。停
止位正确( 为1) 则FE 标志为0,否则FE 标志为1。 这个标志可用来检测同步丢失、传
输中断,也可用于协议处理。UCSRC 中USBS 位的设置不影响FE 标志位,因为除了第
一位,接收器忽略所有其他的停止位。 为了与以后的器件相兼容,写UCSRA 时这一位必
须置0。
数据溢出标志(DOR) 表明由于接收缓冲器满造成了数据丢失。当接收缓冲器满( 包含了
两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生
了。DOR 标志位置位即表明在最近一次读取UDR 和下一次读取UDR 之间丢失了一个或
更多的数据帧。 为了与以后的器件相兼容,写UCSRA 时这一位必须置0。当数据帧成功
地从移位寄存器转入接收缓冲器后, DOR 标志被清零。
奇偶校验错标志 (UPE) 指出,接收缓冲器中的下一帧数据在接收时有奇偶错误。 如果不
使能奇偶校验,那么UPE 位应清零。为了与以后的器件相兼容,写UCSRA 时这一位必
须置0。

5)奇偶校验器

奇偶校验模式位UPM1置位将启动奇偶校验器。校验的模式(偶校验还是奇校验)由UPM0
确定。奇偶校验使能后,校验器将计算输入数据的奇偶并把结果与数据帧的奇偶位进行比
较。 校验结果将与数据和停止位一起存储在接收缓冲器中。这样就可以通过读取奇偶校
验错误标志位(UPE) 来检查接收的帧中是否有奇偶错误。
如果下一个从接收缓冲器中读出的数据有奇偶错误,并且奇偶校验使能(UPM1 = 1),则
UPE 置位。直到接收缓冲器(UDR) 被读取,这一位一直有效。

6)禁止接收器

与发送器对比,禁止接收器即刻起作用。正在接收的数据将丢失。禁止接收器(RXEN 清
零) 后,接收器将不再占用RxD 引脚;接收缓冲器FIFO 也会被刷新。缓冲器中的数据将
丢失。

7)刷新接收缓冲器

禁止接收器时缓冲器FIFO 被刷新,缓冲器被清空。导致未读出的数据丢失。如果由于出
错而必须在正常操作下刷新缓冲器,则需要一直读取UDR 直到RXC 标志清零。下面的
代码展示了如何刷新接收缓冲器。

void USART_Flush( void )
{
unsigned char dummy;
while ( UCSRA & (1}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top