Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
Microcontrollers and Microprocessors
Other MCU/MPU Products
R8C/Tiny
More
Cancel
R8C/Tiny
106: R8C - Forum
R8C/1x 発振停止検出機能について
Home
Forum
Tags
More
Cancel
New
Replies
3 replies
Subscribers
445 subscribers
Views
2004 views
Users
0 members are here
発振停止検出機能
R8C
低速オンチップオシレータ
ocd2
beginner
メインクロック
Options
Share
More
Cancel
Related
R8C/1x 発振停止検出機能について
entake
over 9 years ago
こんにちは、entakeと申します。お世話になっております。
電源起動後、XINクロック(20MHz)に切り替えていますが、万が一XINクロック供給が途絶えた時のために、発振停止検出機能を使おうと考えています。
R8C/1Bのハードウェアマニュアルによると、同機能は、メインクロック発振回路の停止を検出すると、自動的に低速オンチップオシレータ発振設定(cm14=0)&オンチップオシレータ選択(ocd2=1)とし、発振停止検出割り込みにジャンプするようです。
ジャンプした後の動作ですが、「低速オンチップオシレータからメインクロックへの切り替え手順」として同マニュアルに参考フローが載っています。
(1)ocd3でメインクロック復活確認 ※永久ループ
(2)復活後→発振停止検出機能は無効にセット
(3)ocd2でメインクロックに切り替え
⇒この通りに作ると確かに正しく動くのですが、上記(2)を削るとなぜか上手く動きません。(UART通信ができない)
発振停止検出機能を有効にしたまま、動作を継続できればベストなのですが、何かお分かりの方、お願いいたします。
Kon Nozomu(すと)
over 9 years ago
entakeさん
すと@konです。
R8C/12のH/Wマニュアルを参照してコメントしています。
発振停止検出に関してですがフローチャート上で示されているのは、
・メインクロックの発振確認(まだメインクロックで動作していない)
・発振停止検出機能を無効(メインクロック動作前なので)
・メインクロック動作開始
となっています。つまり、メインクロックが正常に動作した後(メインクロック動作開始以後)であれば、再び発振停止検出機能を有効にしてもいいと思います。
メインクロック停止を検出した後の処理ですが、割り込み内でメインクロック復帰を待つのはいいと思いますが、外部から見るとダンマリになるため、何が起きているか判断がつきません。
また、クロックが破損、破壊があったときには電源onのまま復旧しません。
発振停止割り込み内では、まずはアクチュエータ関連の全出力をoff。リトライ回数を決めて復旧できるならソフトウェアリセット等の初期化処理(クロックに異常が発生するくらいなら他の周辺機能に影響も考えられるため)、リトライを超えたらエラー表示等で電源offを促すなどの対策が必要ではないでしょうか。
E8a接続時には高速オンチップが動作しているため、メインクロック停止後もE8aとの接続は維持されると思います。ROMの状態でもハングアップしているようなので、割り込み内の処理に何か問題があるのではないでしょうか。
Cancel
Up
0
Down
Reply
Cancel
entake
over 9 years ago
>すと@konさま
コメントありがとうございます。
質問が的を得ていないと思って再編集している中、適切なコメントをいただき、大変助かります。
> つまり、メインクロックが正常に動作した後(メインクロック動作開始以後)であれば、再び発振停止検出機能を有効にしてもいいと思います。
こちら、実験してみます!
とりいそぎ失礼します。(納期間近につき。。)
>掲示板管理人さま
先ほど間違って削除依頼してしまいました。有用なコメントもついたので、なんとか取り消しをお願いしたく。
Cancel
Up
0
Down
Reply
Cancel
entake
over 9 years ago
>すと@konさま
発振停止検出割り込み処理内で、メインクロックの発振を確認後、”発振停止検出機能は無効化”してから、メインクロックに切り替えて、メインルーチンへ戻す。
メインルーチンでは、常時SFRリフレッシュ処理として、ポート方向レジスタを更新していますが、そこに”発振停止検出機能の有効化”を追加し、ようやく上手くいきました。
暴走についてですが、ocd2アクセス時のプロテクト解除忘れも一因でした。情けない。。
また、メインクロックの発振を待っている間は、アラームを出すなどの工夫も大変参考になりました。
ちなみに、発振待ちのまま30秒経つとWDTリセットがかかるのが盲点でした。
20MHz動作で0.2秒になるよう設計してある場合、125KHz動作になると、確かに約30秒でWDTカウンタはアンダーフローしますね。
メインクロック発振確認後は、ソフトウェアリセットで仕切りなおしたかったのですが、無用なイニシャル処理を避けねばならず、何事もなかったかのように戻すのに苦労しました。
すと@konさまのご意見は、大変参考になりました!
また何かありましたら、よろしくお願いいたします。
Cancel
Up
0
Down
Reply
Cancel