マイコン初心者です。
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ランキング
-
PLCとPCの通信
-
SH7144でパルス幅を測定したい。
-
組み込みマイコンでのソフトウ...
-
レジスタマップって何ですか?
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
VBSの処理中一旦処理を止めて再...
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
Visual C++からpingを実行して...
-
VBAの配列サイズとメモリに関して
-
explorer.exeが異様にメモリを食う
-
vba listviewにおけるtextのAli...
-
メッセージボックスのボタン名変更
-
winsockでソケット通信の開発を...
-
win10で、正確な待ち時間の作り方
-
マンセル⇔XYZ,RGB変換式或いは...
-
プログラミング ソースコード
-
コンソールアプリケーションの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PLCとPCの通信
-
レジスタマップって何ですか?
-
シリアル通信でのデータ取りこぼし
-
マイコンからSDカード内のテキ...
-
フラッシュメモリへの書き込み
-
組み込みマイコンでのソフトウ...
-
TCNTとTIFRの意味
-
PICマイコンのCLRWDT動作について
-
SH7144でパルス幅を測定したい。
-
Octal D-type transparent latc...
-
マイクロ秒で精度が出るタイマー
-
2つのアナログ信号が一致して...
-
マイコンのCプログラミングで未...
-
PIC12F683でLEDをスイッチで点...
-
機械語のレジスタペアについて
-
ArduinoとXBeeを用いたRSSIの取...
-
PCからシリアル通信で外部ハー...
-
A/D変換について
-
アセンブラプログラム
-
ビット演算を学びたい
おすすめ情報