Serial port AVR ATMega1284P USART通信锁定

Serial port AVR ATMega1284P USART通信锁定,serial-port,communication,avr,usart,Serial Port,Communication,Avr,Usart,我在同步模式下使用USART从主机到固件(驻留在ATMega 1284P中)进行通信。我在固件端的最大缓冲区大小是20,如果我连续地将数据从主机发送到固件,并将一些响应从固件发送到主机,那么通信会以某种方式锁定。我怀疑传输数据缓冲区(TXB)和接收数据缓冲区(RXB)发送/接收固件输入/输出数据时共用的UDR寄存器是否被锁定,从而导致通信停止。对这个问题有什么建议吗 附言: 对于从固件到主机的传输,编码为: UCSRA&(1UDR寄存器在avr地址空间(特殊io寄存器映射)的同一地址物理上存在两

我在同步模式下使用USART从主机到固件(驻留在ATMega 1284P中)进行通信。我在固件端的最大缓冲区大小是20,如果我连续地将数据从主机发送到固件,并将一些响应从固件发送到主机,那么通信会以某种方式锁定。我怀疑传输数据缓冲区(TXB)和接收数据缓冲区(RXB)发送/接收固件输入/输出数据时共用的UDR寄存器是否被锁定,从而导致通信停止。对这个问题有什么建议吗

附言: 对于从固件到主机的传输,编码为:
UCSRA&(1UDR寄存器在avr地址空间(特殊io寄存器映射)的同一地址物理上存在两次。在硬件中,uasrt的rx和tx的UDR之间没有锁定

所显示的条件对我来说似乎没有问题,但我没有查看avr数据表


可能您在写入/读取循环?20个字符的缓冲区时遇到了一些问题?请显示您的代码(请缩小到我们需要了解的最小值)。

这是关于嵌入式编程,如何在atmega设备中使用UART。不涉及网络!您真的是指“同步”吗模式?这始终使用单独的时钟线。如果您通过rs232与pc通信,则必须使用异步模式!问题可能从这里开始…不,我没有使用rs232,两台主机(运行arch linux)控制器在两个不同的板上绑定在一起。因此不涉及电缆。uhh-等待-没有电缆的UART连接?您的位是否由松鼠从一个板的TX传输到另一个板的RX?@vlad_tepesch主机cpu板插入mcu板。如果我限制从主机发送到固件的数据,它工作得非常好re小于20。然后,基于固件端到主机的确认,我发送进一步的数据。缓冲区为字符类型。只有当我持续从主机传输数据时,问题才会出现。一旦超过20的限制,固件停止响应(固件无法发送确认,主机正在等待确认以发送下一个数据)。因此,请您向我们展示您的代码,也许我们可以找到问题。我不是远程分析黑匣子的专家:-)