こんにちは、Masaといいます。お世話になっております。
割り込みのポーリングを行おうとしています。RA2L1シリーズを使用して、シリアルコミュニケーションインタフェース(SCI)でデータを送受信します。割り込みを使えない環境と言う状況で、割り込みのポーリングで送受信状況を判断した通信を考えています。
Renesas RA2L1 グループ ユーザーズマニュアル ハードウェア編(R01UH0853JJ0130 Rev.1.30 Feb 2023)の214ページ、215ページに12.5.3 割り込みのポーリングの項があり、下記手順が記載されています。
1. 割り込みクリア許可レジスタ (NVIC_ICER) を設定してください。2. 割り込み要因として、IELSRn.IELS[4:0]ビットを設定してください。3. スヌーズモードの解除(SELSR0.SELS[7:0]ビットの設定)、ソフトウェアスタンバイモードの解除(WUPENレジスタの設定)など、イベント要因に対する動作設定をしてください。4. 割り込みセット保留レジスタ (NVIC_ISPR) をポーリングしてください。
上記手順の4での「割り込みセット保留レジスタのポーリング」の記述方法について調べても見つけられませんでした。SCI0の送信バッファエンプティポーリングの場合NVIC_SetPendingIRQ(IEL9_IRQn)が割り込みセット保留レジスタの記述になるのではと想像しているのですが、ポーリングにあたりwhile文としての記述がわからない状態です。いくつかのサンプルプログラム(RA2L1以外も)をダウンロードして「NVIC_SetPendingIRQ」を使用した例を検索してみましたが、見つけられませんでした。
サンプルプログラムや記述方法についてご存じの方がいらっしゃいましたら、教えていただけますと助かります。
宜しくお願い致します。
わわいです
そこに書かれているポーリングというのは、あくまでも割り込みコントローラが割り込みを認識するときの手順を説明するもの、であって、ソフトウエアポーリングするためのもんではありません。
割り込みが使えない、というのであれば、わざわざ割り込みコントローラを介するのではなく、SCIデバイスの受信ステータス、送信ステータスをポーリングしましょう
わわい様
おはようございます、Masaです。
ご教示ありがとうございます。「割り込み要求のポーリングをする手順を…」の記載を見て、
・割り込みのポーリングができる・1~4の手順以外では実現できない
と判断してしまい、悩んでしまった次第です。わわい様がおっしゃられます通り、SCIのステータスを見て実現するコーディングも進めていましたので、そちらが正解と言うことで安心しました。大変助かりました。ありがとうございました。