![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
秋月製マイコンボード(マザーボードも秋月製です)、H8/3052F(以下H8)につきまして質問があります。
なお開発環境にはベストテクノロジーのGDLを使用し、C言語にてプログラムを行ってます。
現在、2枚のH8を連動させて動かすことを試みています。
目的としましてはH8を物理量の計測に使用しています。
私のとった手法は、以下の通りです。
1、H8の、ある汎用ポート同士を1本の信号線で繋ぐ
2、片方のH8(仮にH8(A)とします)のマザーボード付属のタクトスイッチを押す。これを合図にH8(A)は計測を開始し、それと同時にH8(A)の汎用ポートから信号が出力される。
3、もう片方のH8(仮にH8(B)とします)はH8(A)からの出力があるまで待機し、出力を検知すると計測を開始する。
プログラムの内容としましては、以下のようにしました。
※H8(A)の入力検知用のタクトスイッチは、ポート4のビット4についています。また信号の出力はポート1のビット0です。
※H8(B)の入力検知用のポートはポート4のビット0です。
※両ボードともに同一の安定化電源から電源を取っているので、グランドは共有できていると思います。
<H8(A)側のmainプログラム>
/*ポート定義****/
P4.DDR = 0; /*ポート4のタクトスイッチを入力に設定。押すと0、何もなしで1*/
P4.PCR.BYTE = 0xff; /*ポート4を全ビットプルアップ。*/
P1.DDR = 0xff; /*P1を出力に設定*/
/*****************/
/*スイッチ入力待機部分*********/
while(P4.DR.BIT.B4); /*タクトスイッチが押されるまで、待機*/
P1.DR.BIT.B0 = 1; /*P1のビット0から5V信号を出力、別のH8(B)に信号を送る*/
/******************************/
(~以下、計測プログラム部へ)
<H8(B)側のmainプログラム>
/*ポート定義****/
P4.DDR = 0; /*P4端子を入力に設定。信号入力で0、何もなしで1*/
P4.PCR.BYTE = 0xff; /*ポート4を全ビットプルアップ。*/
/*****************/
/*スイッチ入力待機部分*********/
while(P4.DR.BIT.B0); /*P4のビット0にH8(A)からの信号入力があるまで、待機*/
/******************************/
(~以下、計測プログラム部へ)
以上のようなプログラムを組みました。
H8(A)側は正しく駆動し、タクトスイッチを押すと、計測を開始するとともに5Vの信号が出力できています。
問題はH8(B)側で、H8(B)のボードの電源を入れた直後から、H8(A)の信号を待たずに計測を開始してしまいます。
最初はH8(B)のポート4ビット0の初期値に0が入っており,いきなりwhile文を抜けてしまうのかと思いました.
そこで,H8(A)からの信号線を外しますと、ずっと計測待機状態に入るのでプログラム的には一応回っているようです。
(私の認識では,ハードウェアマニュアルによればポート4の初期値は全ビット0ですが,MOSプルアップをすることにより,全ビット1に反転する(?)と考えています)
次に,H8(A)側から予期せぬ信号が入力されているのかと思い,テスターで電圧を測ってみました.
しかし,タクトスイッチ入力前は0Vで,入力後は5Vが出力されており,見かけ上は問題がなさそうでした.
なぜ、H8(B)は電源を入れたとたんに駆動を開始してしまうのでしょうか?
もしお分かりになる方がいらしたら、ご教授願います。
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)タクトスイッチの入力処理は、チャタリング除去の処理を行なった方が良い。
お返事が遅れまして申し訳ありません.
大変,丁寧な助言をしてくださいまして,ありがとうございます.
ご指摘の通り
while( 0 == P4.DR.BIT.B0 );
と訂正しましたところ,正常に動きました.
また,アドバイスも大変参考になりました.
この2点についても,考慮させていただきます.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excel 行でソートすると計算式が上手くいかない。 6 2022/06/01 08:18
- Excel(エクセル) 列を挿入しても式の一部を固定するには 6 2023/05/31 21:57
- Visual Basic(VBA) VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカウントできる、VB 2 2022/04/06 21:33
- プリンタ・スキャナー キャノンmp490プリンター【エラー番号5400】で【プリンタートラブルが発生しました。電源を入れ直 2 2023/07/24 17:45
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- デスクトップパソコン パソコン修理について教えて下さい。 自作PCでwin7を入れていたパソコンが起動しなくなりました。 9 2022/04/24 16:21
- 工学 オペアンプによる増幅回路でのノイズ対策について 5 2022/03/22 16:06
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SNR測定方法の差分法について質...
-
入力容量(Input Capacitance)...
-
回線の平衡度について
-
雑音指数の疑問(その3)・過...
-
プログラミングが分かりません。
-
クレーンでのCFブレーキとな...
-
オシロの波形から発振周波数を...
-
c言語プログラミングで初項を1....
-
3×3のラテン方陣をつくるプログ...
-
整合フィルタ(matched filter)...
-
互いに素と負の数
-
Expression: nptr != NULL
-
古典制御のゲイン交差周波数と...
-
矩形波のスペクトラムについて
-
音声を重畳するとは・・・
-
一次遅れ系の制御における時定...
-
矩形パルス外力の応答が、最大...
-
火力発電 蒸気タービンのMSV、C...
-
数学の問題がわかりません
-
FIRフィルタ タップ数の求め方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報