”かふぇルネ“はルネサス製品に関してユーザ同士が自由に会話をするツールであり、回答者はルネサス社内外の方たちとなります。ルネサス製品やソリューションに関して正式な回答をご希望の場合は、ルネサス技術サポート問合せをご使用ください。
今回RL78G13の64pin製品(R5F100LFAFA)にて40本のpin出力を指定の順番にON、OFFするプログラムをCS+で組んでいるのですが、出力部分をどうにか簡潔に処理出来ないか悩んでいます。
因みに各pin出力の先はトランジスタを経由したPchMOSFETによる12V3Aの回路です。
処理内容としては、外部割込INTP0発生で1番目の指定pinから順番に40本のpin出力のON、OFFを繰り返すのですが、間に一定の間隔のインターバルがあり、なおかつ再度外部割込INTP0発生時は処理を中断し、その時ONになっているpinをOFFにしてから再び外部割込を待機し、外部割込発生で続きのpinからという感じです。
外部割込待機→INTP0発生→pin01(Hi)→300ms待機→pin01(Lo)、pin02(Hi)→300ms待機→pin02(Lo)、pin03(Hi)→300ms待機→INTP0発生→pin03(Lo)→外部割込待機→INTP0発生→pin04(Hi)→〜〜〜以降pin40まで〜〜〜
*300msの待機時間はユーザー操作により変化する
*pin出力の順番は固定
この際、各出力pinをON、OFFする処理がネックで現在whileの無限ループと時間比較のifの中に各pinをONするswitch文をcase1〜40までと、各pinをOFFするswitch文をcase1〜40まで記述し、switch文に対応する変数を1から++して処理しています。
まだpin出力の順番がport01→port02〜の様に並んでいれば自分でも処理の改善が出来たのですが、基板の設計上port73→port76→port06→port30のような順番になってしまっている為にP7_bit.no3=1やP7=0x04の様な形での操作となり改善策を思いつきませんでした。
何かしら改善策や助言等あればお願いします。
チョコです。
ありがとうございます。
大変助かりました。
Arduino API対応などは耳に挟んでいましたがCS+環境に慣れていた為見向きもしていませんでした……。
ご紹介のサンプルプログラム共々今後の参考にさせて頂きます。