• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:H8/3052F 同士の簡単な通信についての問題)

H8/3052F 同士の簡単な通信についての問題

このQ&Aのポイント
  • H8(A)側は正しく駆動し、タクトスイッチを押すと、計測を開始するとともに5Vの信号が出力できています。
  • 問題はH8(B)側で、H8(B)のボードの電源を入れた直後から、H8(A)の信号を待たずに計測を開始してしまいます。
  • なぜ、H8(B)は電源を入れたとたんに駆動を開始してしまうのでしょうか?もしお分かりになる方がいらしたら、ご教授願います。

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

  • ベストアンサー
  • Ponta00
  • ベストアンサー率75% (3/4)
回答No.1

H8(A)で以下のように操作すると、P10にはHigh(5V)が出力されますよね? >P1.DR.BIT.B0 = 1; /*P1のビット0から5V信号を出力、別のH8(B)に信号を送る*/ それをH8(B)で待っているとのことですが、以下の条件ではH/Lが逆ではないでしょうか? >while(P4.DR.BIT.B0); /*P4のビット0にH8(A)からの信号入力があるまで、待機*/ H8(A)がHighを出力するまで待ちたいのであれば、H8(B)は以下の条件で待たなければいけないと思います。 while( 0 == P4.DR.BIT.B0 ); /*P4のビット0にH8(A)からの信号入力(High)があるまで、待機*/ H8(A)側のポートが0V(Low)に引っ張っているため、while(P4.DR.BIT.B0); のループを抜けてしまうのではないかと。 条件を変更して確認してみてください。 あと、老婆心ながら以下の2点、アドバイスさせていただきますね。 (1)双方のH8が、お互いの準備が整ったかどうかを待ってから計測を開始したほうが良い。 (2)タクトスイッチの入力処理は、チャタリング除去の処理を行なった方が良い。

yaboo_us
質問者

お礼

お返事が遅れまして申し訳ありません. 大変,丁寧な助言をしてくださいまして,ありがとうございます. ご指摘の通り while( 0 == P4.DR.BIT.B0 ); と訂正しましたところ,正常に動きました. また,アドバイスも大変参考になりました. この2点についても,考慮させていただきます.

関連するQ&A

専門家に質問してみよう