Atxmega256 の USART フロー制御に問題があります。フロー制御に RTS/CTS を使用するモデムと通信しています。モデムが CTS を Low に設定したら、再び High になるまでデータの送信を停止したいと考えています。現在、割り込み駆動の USART ルーチンを使用していますが、送信を停止する良い方法が見つからないようです。CTS が低くなったときに送信を停止すると、送信バッファーに既にあるデータが送信され、失われます。
送信を無効/有効にするために次のことを試しました:
if(false == clearToSend()) {
USART_TxdInterruptLevel_Set(data->usart, USART_TXCINTLVL_OFF_gc);
while(false == clearToSend()) {}
USART_TxdInterruptLevel_Set(data->usart, USART_TXCINTLVL_LO_gc);
}
残念ながら、それは送信を永久に無効にしているようです。何か案は?
よろしくフレドリック