RX-210+PDG2でプログラムを書き始めました。
最初のクロック設定関数(下記)で約3秒もかかっています。
R_PG_Clock_WaitSet(0.01);
こんなにかかるものなのでしょうか?
【クロックの設定】
・高速オンチップオシレータ
・36.864MHZ
IWDTクロック使う
サブクロック使わない
R_PG_Clock_WaitSet でぐぐると『Renesas Peripheral Driver Library および Peripheral Driver Generator ご使用上のお願い』という pdf ファイルが見つかりますが、これには
R_PG_Clock_WaitSet関数を使用する場合は、rpdl_wait_time関数を呼び出す コードの前でMOFCR.MODRV2[2:0]ビットを設定するコードを追加してください。
とありますが、関係はないですか?
R_PG_Clock_Set() の中で呼んでる R_CGC_Set() で時間が掛かるならば、下記の FAQ を参考にすれば原因は特定できそうです。
FAQ 1010977 : Peripheral Driver Generator V.2が生成する関数が呼び出している、ライブラリ(Renesas Peripheral Driver Generator Library)の内部処理をCS+またはHigh-performance Embedded Workshop でデバッグすることはできませんか?
bep様 said:トレースしてみました。 下記の処理で2~3秒かかっています。 /* Set the oscillator frequency */ SYSTEM.HOCOCR2.BYTE = hococr2_copy; オンチップオシレータに周波数設定を書き込んでいます。
bepさん、こんにちは。自分が企業/団体に所属するユーザとしてMyRenesasへユーザ登録していて、かつ有償ツールユーザだったら、ある程度調べてミスを見付けられなかったら、ルネサスの国内問い合わせ窓口に聞くと思います。起動に2秒掛かる事は、普通におかしいと感じて差し支えない現象だと思うからです。(そこで、『RX210ではそういうものです』との回答があったら流石に観念します。)先ほどの投稿に書いたようにRX210未経験者ですが、自分の事として考えると、窓口に聞く前にもう少し調べると思います。藤田様のアドバイスで、PDG2が生成した部分についてもソースレベルデバッグ出来るようになっているので、先ほどの投稿の『RX210のE1での動き』のスレッドでの『周波数をデフォルト32MHzで使用する場合は、そんな事はありません。』を頼りに、ひとまずHOCOの周波数を32MHzのままにして原因究明をやり直してみます。最初にSYSTEM.HOCOCR2.BYTE = hococr2_copy;の前後にブレークポイントを設定してGoして一瞬で実行されるか確認します。(ステップ実行しないのはデバッガが裏で色々なことをする影響を出来るだけ除きたいからです。)それでも、この行で時間が掛かるのであれば、この行を削除して試すことを考えます。ソースレベルで手出しが出来ないとしても、CS+/HEWのアセンブルウィンドウでNOPに書き換えます。そうしてから、どこで時間が掛かっているか調べ直してみます。もちろん、HOCOは32MHzのままであり36.864MHzにしていませんので、起動以後は正常には動作しませんが、起動処理は追えると思うからです。(ここは、あくまで『そう思っている』という事でしかなくて、現実は『そうは行かない』かも知れませんが、追えないのであれば窓口に聞くことにすると思います。)もしかすると、『釈迦に説法』になってしまっているかも知れませんが、何かお役に立てればと。追記ひょっとすると、外部発振子を取り付けてデバッグする方が簡単だったりする(時間の節約になる)かも知れませんが、その時は、この投稿は気にしないで下さい。