マイコンのC言語プログラムのソースについての質問です。
マイコンを使い自由落下の時間差を測定しようと考えています。使用するマイコンはH8SX/1655です。ソフトウェアとしてHEWを使用しています。
システムとしてはマイコンのクロックを使い 、マイコンに2箇所から光の信号を入力して、物体を自由落下させ、物体が光を遮ったときを参考にして、その差分から時間を計測するというシステムを考えています。
具体的には
(1)フリーランタイマーを走らせるプログラム
(2)オペアンプからの入力を一定間隔でA/D変換するプログラム
(3)A/D値が定常状態から動いていたら、「レーザーが遮られた」ということなのでそのタイミングでフリーランタイマーのカウンタを取得するプログラムを
作ればいいということを教えていただいたのですが、プログラムの書き方がわかりませんでした。
この3つのプログラムのソースの書き方について解答・解説・指摘お願いします。
また、参考になるサイトがあれば紹介お願いします。
No.1ベストアンサー
- 回答日時:
先の質問への回答でも書きましたが、一足飛びに最終目的を考えるのではなく、段階を踏みましょう。
まずは「タイマを扱えるようになること」と「A/D変換を扱えるようになること」を考えるべきです。
ルネサスには必ず行きましょう。ダウンロードには登録が必要ですが、たいした事を書く訳でもありません。
http://japan.renesas.com/products/mpumcu/h8sx/h8 …
「スキャンモードによるA/D変換」は必ず読みましょう。今回の目的に必須です。
タイマの方は、ハードウェアマニュアルで16bitタイマの仕様をよーく読みこめばどこを操作したらフリーランで動作して、タイマ値を取るにはどのレジスタを読めばいいかがわかります。
それを踏まえた上で「パルス幅測定」も読みましょう。
そのままだとむしろフォトインタラプタ向きになっていますが、タイマの扱い方自体のサンプルではありますし少し改造すれば簡単にフリーランタイマで走るようになります。
何回も回答ありがとうございます。
また、参考サイトの紹介ありがとうございます。
早速サイトからマニュアルダウンロードしました。
じっくり日にちをかけてマニュアルを読み込んでみたいと思います。
No.3
- 回答日時:
プログラムの書き方がわからない?
CQ出版のH8基盤と記事にまさる解説は難しいように思います。
CQ出版のHPにも情報があるので、そこもチェックしてみましょう。
それでできないのであれば、方法を変えてみるのも手です。
全くの初心者で、CQ出版の本からでもステップを踏めない人は少なからず
いると思います。
ある意味H8+Hewは全くの素人からはじめるには理解しなければならない情報が
多くて大変だと個人的に思います。
無駄になるかもしれませんが、pic18あたりを使ってみるのも手です。
タイマとAD変換とPCへの通信ですね。結構定番の処理のように思います。
C言語によるPICプログラミング入門 (単行本) あたりにサンプルソースがあるので
AD変換あたりを中心にコピーすればできるように思います。
No.2
- 回答日時:
直接の回答ではないですが……。
そもそも、開発の順序からいえば、まず、「自由落下の時間計測」の事前検証は終わっていますか?
入力にどんな素子を使うにしろ、その素子の出力を、オシロスコープなどで計測して、時間をはかって確認しておくことが大切です。
それから、デジタル的なパルスなら、どの程度のパルス幅なのか?(そのパルス幅で捕まえられるのか?)計測すべき時間(二つのパルスの時間差)はどのくらいなのか?
そのあたりを確認しておくべきです。
少なくとも、「オスロスコープで確認できた」=「マイコンへの入力は間違いない」ということをはっきりさせて、それから、マイコンを扱うという未知の領域に入るべきですが、この前段は確認できているのでしょうか?
ソフトを作成したとして、おそらく一発では動きません。
そのときに、オペアンプの出力はそもそも正しいのか? マイコンのプログラムはそもそも正しいのか? と、不確定要素が増えると、手に負えなくなります。
回答ありがとうございます。
結果ばかりを追い求めていました。
まずは、おっしゃるとおりオシロスコープで信号の波形を確認してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- オープンソース arduino ide 2.0.0 について 1 2022/09/19 15:45
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シリアル通信でのデータ取りこぼし
-
PLCとPCの通信
-
マイコンからSDカード内のテキ...
-
2つのアナログ信号が一致して...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
プログラミング ソースコード
-
バックグラウンドのプロセスの...
-
C言語で、メモリを解放しないで...
-
動的メモリとexit(C言語)
-
タスクマネージャーのプロセス...
-
VBAにてTIFFから画像を取込みた...
-
スタティックテキストが表示さ...
-
C#でのbatファイル実行結果取得
-
Accessフォームからの外部アプ...
-
explorer.exeが異様にメモリを食う
-
家電製品の電力周波数を変える機械
-
VC++スレッドの正しい終了のさ...
-
VBA、UserFormを前面に出力して...
-
10進数をBCDに変換する方法
マンスリーランキングこのカテゴリの人気マンスリー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変換について
-
アセンブラプログラム
-
ビット演算を学びたい
おすすめ情報