R8C/15 SSU機能について

はじめましてマイコン初心者です。

質問があり投稿をさせていただきました。
R8C/15を使ってSSUの機能を使用しようと考えています。

参考フローチャートいをルネサスさんのホームページで発見しました。
http://documentation.renesas.com/doc/products/mpumcu/apn/r8c/rjj05b0944_r8cap.pdf

フローチャート(マスタ側参照)には、起動スイッチとして割り込みINTをつかっています。
プログラムをみると、割り込み処理ではなく、割り込みフラグをポーリングで対応しているようにみえます。
ポーリングで使用する場合でも、asm割り込み許可をCPUレジスタに設定する(asm("FSET I"))必要はあるのですか?   
割り込みフラグをチェックするような使い方の場合は、優先順位を1に設定するだけではだめなのですかね。


実はオーバーランエラーがおきるという問題があり、
切り分けを行うために、起動スイッチを割り込みINT入力の部分を取り除いて、
リセット後すぐにSSU通信というシンプルにするとなぜか正常に動作します。。。。。

 


 

Parents
  • ryuさん

     

    サンプル(フローチャート)を見る限りは「asm("FSET I")」で割込み許可しているものの、「int0ic = 0x00」にてINT0の割込みは禁止されていることから、「asm("FSET I")」そのものが問題ではないと思います。

    狙いはルネサスさんにしか分かりませんが、エッジ検出を割込みコントローラでやらせている理由を「割込みコントローラ側でやればチャタリング除去のコーディング量が減らせるんじゃね?」と読みました。(言葉は乱暴ですがご容赦を ^^;) 

    問題は「asm("FSET I")」により割込みが許可された時の「その他の割込み」です。

    SSUの割込み優先度を他の割込みより高くしたとき、動作はいかがですか?

  • Konさん

    レスありがとうございます。

    SSU含めてその他の割り込みは使用していないんですよね。。。。。

    少し本題から離れてしまいますが、

    「int0ic = 0x00」にてINT0を禁止しているのに、わざわざ明示的にasm("FSET I")」で割込み許可をさせている意図は何かあるのでしょうか?

    IRピットでのフラグ検知は、asm("FSET I")の記述なしでもSW起動単体で評価(例;IRビット==1ならLEDを光らす)で確認したところ正常に行えています。

  • チョコです。

    このサンプルコードを使うと,CPUの処理を占有してしまい,他の処理をどのように実行させるかが問題になります。その部分の処理を割り込みでやって欲しいということではないかと思います。

    本来は,SSUの処理は割り込みを使ってやるべきなのでしょうが,割り込みを使うと,処理の流れがわかりにくくなります。そこで,SSUの処理を分かり易くするためにこのような構造にしたのではないかと思います。

  • konです。

    チョコさんがおっしゃるリソースの問題かもしれませんが、「ユーザー既存システムのへの移植性を考慮した」という見方もできます。

    割込みを使用している環境に本サンプルを適用しても、影響がないように…って考えすぎですかね。

    asm("FSET I")の記述なして動作するのであれば、現状はそれでいいと思います。

    ただ、割込みを使用する際は問題となることを留意しておいてください。

    個人的には今の内にオーバーランを引き起こす原因(割込みなら割込み要因、もしくはその他要因)を突き止めておいた方がいいかと思います。

    火のない所に煙は立ちませんから…

  • チョコです。

    konさんのおっしゃるようにオーバーランの原因が気になります。

    マスタとして,送信および受信を単独で動作している限りはオーバーランは発生しないはずです。

    マスタ動作でオーバランが発生する可能性としては,送受信動作で,受信データを読み出さないで,次の送信データを書き込んだときくらいです。少なくとも,参照されているANのマスタ処理だけでは発生しないはずです。

Reply
  • チョコです。

    konさんのおっしゃるようにオーバーランの原因が気になります。

    マスタとして,送信および受信を単独で動作している限りはオーバーランは発生しないはずです。

    マスタ動作でオーバランが発生する可能性としては,送受信動作で,受信データを読み出さないで,次の送信データを書き込んだときくらいです。少なくとも,参照されているANのマスタ処理だけでは発生しないはずです。

Children
  • 皆様、

    コメントありがとうございます!!

    現状、送信は常に禁止にして、受信だけを行っています。ADCとSPIでつながっている回路になっています。オーバーラン原因に関しては、もう少し確認をしてみたいと思います。

    いろいろとアドバイスありがとうございます。

  • 皆様、

    コメントありがとうございます!!

    現状、送信は常に禁止にして、受信だけを行っています。ADCとSPIでつながっている回路になっています。オーバーラン原因に関しては、もう少し確認をしてみたいと思います。

    いろいろとアドバイスありがとうございます。