(2)两个缓冲器的操作好象是一个循环的FIFO。因此对于每个接收
到的数据只能读一次//没理解
请不要提循环的FIFO的概念. 这里只是说, 读过一次后, FIFO 下面的数据会自动升到顶上来. (所以, 如果你再读, 就是后面的数据了)
(3)avr到底接收几个字节然后数据溢出出错DOR置位
接收到 1 个数据就会引发中断. avr 在设计时, 为了避免中断的延迟导致还没有读取接收的数据,后面的数据已经完成接收而覆盖先前的数据, 设计了 FIFO . 如果你的响应足够快, 可以不管 FIFO 的事情.
3. 必须在读取UDR 寄存器之前访问状态标志位。否则将丢失错误状态。
这是因为一个数据(8位数据和多位的状态位), 两个端口(UDR 寄存器和状态标志寄存器) 读取的问题导致的, 这说明 FIFO 的自动更新以读取 UDR 为条件, 而跟你有没有访问状态标志位无关. 因此, 你要关心状态标志位, 那就先读和保存状态标志, 再读 UDR; 如果不关心状态位, 那就读 UDR 好了, 不会影响 FIFO 系统.
|