AVRプロジェクトの開発IDEとしてAVRStudio5でEVK1105開発ボードを使用しています。FreeRTOSを使用しています。このボードには3つのUSARTポートがあります。1つの外部モジュールがUSART-RS232モードを介してAVR32ボードに接続されています。それは、19230ボーレート、7データビット、奇数パリティ、ストップビット1、および通常チャネルモードでUSART0上のボードに連続シリアルデータを送信します。この目的のために新しいタスクを作成しました。9データバイトごとに、「\n」と「\r」を送信します。そのため、私のタスクでは、文字列バッファに9データバイトを収集し続け、それをUSART1で送信します。受信ポートであるUSAR0からデータを収集するためにポーリング方式を使用しています。しかし、私はデータの受信で問題に直面しています。タイミングの問題なのか、データ収集中にスケジューラーがタスクを切り替えるのかわかりません。しかし、必要なデータが得られません。
トラブルシューティングとしてすでに確認したことは次のとおりです。1。外部モジュールをPCハイパーターミナルに接続すると、完璧な結果が得られます。2. USART0からの受信を使用するのと同じことを実装し、受信したものはすべてFreeRTOSを使用しない場合と同じようにUSART1に送信されます。それはうまくいきます。
何が間違っているのか考えてみてください。キューを使用してTxタスクとRxタスクの間で通信し、USART0からUSART1に文字列バッファを渡します。キューの処理に問題がありますか?キューのトラブルシューティングを行うにはどうすればよいですか?
RxTaskの無限タスクループで50msの遅延を使用しています。問題が発生する可能性はありますか?遅延を使用しないと、OSがクラッシュします。タイミングの問題が発生しないように、FreeRTOSで新しいタスクを作成するためのいくつかの良い方法を提案してください。