我在同步模式下使用USART从主机与固件进行通信(驻留在ATMega 1284P中)。我在固件端的最大缓冲区大小是20,如果我连续从主机发送数据到固件,并且一些从固件到主机的应答,通信锁定了。我怀疑发送数据缓冲区(TXB)和接收数据缓冲区(RXB)公用的UDR寄存器是否锁定,从而导致通信中断。对此问题有何建议?AVR ATMega1284P USART通信锁定
PS: 对于从固件transmisson到主机时,codition是: UCSRA &(1 < < UDRE)应为TRUE
对于从主机接收到固件,条件是: UCSRA &(1 < < RXC)应该为TRUE
我正在使用硬件中断M_USARTx_RX_vect来检查主机串行字符的可用性。
更新:Firmware - Initial Source:MarlinSerial.cpp:USART定义,Marlin_main.cpp:程序流
关于嵌入式编程,如何在atmega器件中使用UART。没有涉及网络! – Klaus 2014-09-02 11:50:44
你真的是指“同步”模式吗?这总是使用一个单独的时钟线。如果您通过rs232与PC进行通信,则必须使用异步模式!也许这个问题从这里开始...... – Klaus 2014-09-02 11:52:59
不,我不使用rs232,主机(运行arch linux)和控制器都在两个不同的板上绑定在一起。所以没有涉及电缆。 – Nagarjun 2014-09-02 11:58:41