
マイコン初心者です。
SH7144でPIOに接続された信号のパルス幅を測定したいです。
ネットで検索をしてH8-3048のサンプルプログラムを見つけたのですが、
SH7144への変更のしかがたが分かりません。
どなたか分かる方がいましたらお教えください。
初心者ですので、具体的に教えていただけると助かります。
ちなみに、下記がネットで見つけたH8-3048でのプログラムです。
宜しくお願いいたします。
/* メイン関数************************************************/
int main(void){
long counter;
P1.DDR = 0xff; // port1出力に設定 表示LED
PA.DDR = 0x00; // portA入力に設定 パルス入力用
ITU1.TCR.BYTE = 0x23; // GRAインプットキャプチャ,カウンタクリアGRA clock 1/8
ITU1.TIOR.BYTE = 0xCD; // GRA立下り,GRB立ち上がりインプットキャプチャ
ITU.TSTR.BIT.STR1 = 0; // カウント停止状態
while(1){
while(PA.DR.BIT.B4 == 0){} // 入力パルス立ち上がり検知
ITU.TSTR.BIT.STR1 = 1; // ITU1 TCNTカウント開始
while(ITU1.TSR.BIT.IMFA == 0){} // GRAキャプチャ,パルス立下り検知
ITU1.TSR.BIT.IMFA = 0; // フラグをクリア
ITU.TSTR.BIT.STR1 = 0; // ITU1 TCNTカウント停止
counter = ITU1.GRA; // カウント値の取得
P1.DR.BYTE = counter >> 4; // 8bitシフトさせP1に表示
}
}
No.2ベストアンサー
- 回答日時:
こんにちは。
> TIOC1A(PE4)に接続するのではなくて、
> PF7などの汎用の入力で行いたいのです。
> そもそも、そういったことはできないのでしょうか?
できます。むしろ、手法としてはその方が簡単です。
ただし精度は落ちますし、そもそものサンプルプログラムの意味がほぼ無くなりますが。
その場合、おおまかな流れは以下のようになるかと思います。
・MTUを初期化する
・MTUのTCNTをクリアする。カウントはストップのまま。
・PF7が1になるのを待つ
・MTUカウンタをスタートする。
・PF7が0になるのを待つ
・MTUカウンタをストップする。
・TCNTの値を読む → これがパルス幅
No.1
- 回答日時:
こんにちは。
サンプルプログラムの仕様は、
・パルス信号をTIOCA1(PA4)から入力
・タイマカウンタはクロックの8分周(元のクロック数は不明)
・レジスタにはパルスの立ち下がり→GRA、立ち上がり→GRBに
キャプチャするように設定しているが、実際は立ち上がりを
PA4ポーリング、立ち下りをGRAインプットキャプチャしている。
(パルスのHi期間を測定)
・取得したパルス幅を、1/16してP1(LED?)に表示する。
てな感じだと思います。
このサンプルプログラムを参考にするならば、パルス信号線はTIOCxxに接続されている必要があります。
接続していれば、変更は、H8-3048のITU1を、SH7144のMTUxに置き換えるだけです。
最も楽に変更を終えたいなら、パルス信号線はTIOC1A(PE4)に接続するのが良いです。
TIOC1Aにつないでいれば、
PA4 → PE4
ITU1 → MTU1
と置き換えられますので、両者のデータシートを首っ引きで見比べて、レジスタの
設定を置き換えていけば、動作すると思います。(多分)
あまり深く見ていないので分かりませんが、相手がSH7144ですと、
・PFC
・モジュールスタンバイ
辺りにも注意する必要があるかも知れません。
ご回答ありがとうございます。
TIOC1A(PE4)に接続するのではなくて、
PF7などの汎用の入力で行いたいのです。
そもそも、そういったことはできないのでしょうか?
素人質問ですみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- 英語 「to不定詞」を目的語に直接取れない動詞で、なお「to不定詞」で表現したい場合の方法について 2 2022/07/11 10:17
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- 英語 インタビューの英語 2 2022/06/07 14:22
- 財務・会計・経理 IT導入補助金について教えて下さい。 社員4名の小さな会社です。 事務は私一人なので、IT化を進めて 1 2022/05/05 13:31
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
H8/3048 マイコンボードについて
-
機械語のレジスタペアについて
-
Macターミナルで実行中のプログ...
-
家電製品の電力周波数を変える機械
-
ウインドウにデータを入力する...
-
VBSでのSendKeysでの画面の最小化
-
ACCESS側からEXCELの書式を設定...
-
第三者に画面を同期するソフト...
-
フィボナッチヒープです
-
3のつく数字と3の倍数のみを表...
-
n次元の正規直交基底ベクトルの...
-
メモリが不足しています(VBA)
-
win10で、正確な待ち時間の作り方
-
エクセル VBA でのCOMポート...
-
C# シリアル通信でデータ受信...
-
VBSの処理中一旦処理を止めて再...
-
MO上でプログラムを実行?
-
計算速度が遅い
-
VBAで一度開いたIEで再操...
-
バックグラウンドのプロセスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジスタマップって何ですか?
-
PLCとPCの通信
-
組み込みマイコンでのソフトウ...
-
USBハブの自作について
-
H8マイコンのプロテクト方法
-
機械語のレジスタペアについて
-
TCNTとTIFRの意味
-
シリアル通信でのデータ取りこぼし
-
PIC12F683でLEDをスイッチで点...
-
スプレッとの制御
-
古い計量機器からのrs232cを使...
-
FATの故障? 1ファイル内の文字化け
-
デジタルマルチメータの自動計...
-
フラッシュメモリへの書き込み
-
マイクロ秒で精度が出るタイマー
-
geko201とマイコンのシリアル通...
-
無限ループを使う意味
-
プリンタポートの制御
-
C言語 マイコン
-
PICマイコンのCLRWDT動作について
おすすめ情報