我在同步模式下使用 USART 从主机计算机到固件(位于 ATMega 1284P 中)进行通信。我在固件端的最大缓冲区大小是 20,如果我不断地将数据从主机发送到固件,并且从固件到主机计算机的一些回复,通信会以某种方式锁定。我怀疑发送数据缓冲区(TXB)和接收数据缓冲区(RXB)共同发送/接收固件数据的UDR寄存器被锁定,导致通信停止。对这个问题有什么建议吗?
PS:对于从固件到主机的传输,代码是:UCSRA & (1 << UDRE) 应该是 TRUE
对于从主机到固件的接收,条件是:UCSRA & (1 << RXC) 应该为 TRUE
我正在使用硬件中断 M_USARTx_RX_vect 来检查来自主机的串行字符的可用性。
更新: 固件 - 初始来源:MarlinSerial.cpp:USART 定义,Marlin_main.cpp:程序流程