ホストコンピュータからファームウェア(ATMega 1284Pに常駐)に通信するために、USARTを同期モードで使用しています。ファームウェア側の最大バッファ サイズは 20 です。ホストからファームウェアに連続してデータを送信し、ファームウェアからホスト コンピュータにいくつかの応答を返すと、どういうわけか通信がロックされます。送信データバッファ(TXB)と受信データバッファ(RXB)に共通の、ファームウェアとの間でデータを送受信するためのUDRレジスタがロックされ、通信が途絶えてしまうのではないかと疑っています。この問題に対する提案はありますか?
PS: ファームウェアからホストへの送信の場合、コードは次のとおりです: UCSRA & (1 << UDRE) は TRUE でなければなりません
ホストからファームウェアへの受信の場合、条件は次のとおりです。 UCSRA & (1 << RXC) は TRUE でなければなりません
ホストからのシリアル文字の可用性をチェックするために、ハードウェア割り込み M_USARTx_RX_vect を使用しています。
更新: ファームウェア - 最初のソース: MarlinSerial.cpp: USART 定義、Marlin_main.cpp: プログラム フロー