在一个间隔段被检测之后同步段的起始比特被检测。记数器马上更加下8个比特同步段的时间。在这8个比特时间结尾,记数器停止。在这时,记数器除8的前13个比特给出了新时钟分频器(BAUD.BAUD)并且后3个比特给出了小数部分(BAUD.FP),当同步段被接收,时钟分步(BAUD.BAUD)并小数部分(BAUD.FP)更新波特率发生寄存器(BAUD)在同步延进之后。
25.6.3.5 碰撞检测
当接收和发射无论是通过管脚配置或者外部连接,传输碰撞能被检测通过设置碰撞检测允许比特(CTRLB.COLDEN)。为了碰撞被检测,接收和传输必须使能(CTRLB.RXEN=1 和 CTRLB.TXEN=1)
碰撞检测是执行每个比特传输时通过检测接收的值与传输的值,见图所示。当传输是空闲时(没有传输处理),字符能被从RxD接收而不触发碰撞。
下图展示了碰撞检测的条件和。由于这个因素,开始比特和第一个数据比特被接收有着相同的值作为传输。第二个接收数据比行被发现与传输比特在检测点不同,这指示发生了碰撞。
当一个碰撞被检测,USART自动按下列顺序执行:
。当前传输异常退出。
。传输缓冲释放。
。传输禁止(CTRLB.TXEN=0)
。这个立即开始并且在同步时间后结束。CTRLB同步忙比特(SYNCBUSY.CTRLB)将要被设置直到结束。
。这个结果将使TxD管脚变成三态
。碰撞检测位(STATUS.COLL)在错误中断标志(INTFLAG.ERROR)后设置。
。自从传输缓冲不再含有数据,传输结束中断标志(INTFLAG.TXC)设置。
在一个碰撞之后,软件必须手动使能传输在继续之前。软件必须保证CTRLB同步忙比特(SYNCBUSY.CTRLB)
之前未被断言重新使能发送器。
|