• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リアルタイムクロック)

リアルタイムクロックの時計機能がループで動作しない理由について

このQ&Aのポイント
  • RTC-7301SF(EPSON TOYOCOM)を使用したリアルタイムクロックの時計機能を確認するために、シリアル通信を行っています。
  • プログラムをステップで実行させると、正常に時計が進みますが、ループで回すと最初のデータがそのまま出力され、時計が進んでいないように表示されます。
  • 現在、問題についての解決策が見つかっておらず、意見や参考情報を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • TinyPine
  • ベストアンサー率30% (719/2386)
回答No.1

表示はcpu側ですか、それともシリアル通信の先ですか? CPUの仕様が分かりませんが、表示ルーチン、もしくはシリアル通信がループの為に割り込みがかからず、表示、もしくは通信が行われなくなっていると思います。 ウエイトも、割り込みが入らないウエイトを入れては駄目で、割り込みが入る様な、コマンドないですか? 又は、割り込みレベルが高くて、割り込みが入らないとか。

man_u
質問者

補足

説明不足ですみませんm(_ _)m 表示はシリアル通信の先です。 TeraTermで表示させようとしています。 CPUはHD64F3068Fです。 ループで回すと・・・ 2008 March 11 Tuesday 16:40:00 2008 March 11 Tuesday 16:40:00 2008 March 11 Tuesday 16:40:00 2008 March 11 Tuesday 16:40:00 2008 March 11 Tuesday 16:40:00 をひたすら繰り返すような感じになります。

その他の回答 (1)

  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.2

volatile 関連の確認はお済でしょうか? RTCから取得したデータが汎用レジスタに保持されたまま、 コンパイルによる最適化によって外部アクセスを発生することなく 汎用レジスタ上のデータをシリアル出力している可能性があります。 ステップ実行する際はきちんと表示されるのであれば、 デバッグ機能の為にレジスタは本来動作するプログラムとは別に 上書きされる為、おのずとRTCへのデータ取得が行われることが ありますので可能性は濃いかと。 ファンクションコールを噛んでるのでvolatileなくても きちんと動いてしまいそうですが、使用するCPUによっては 十分にありえる話かな。

関連するQ&A