図に示すようなシステムを考えています。
物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。
クロックはマイコンからのものを考えています。
レーザーからのレーザー光をフォトダイオード、オペアンプを経由してマイコンにデータ送信しようと考えています。
そこで最初に物体の自由落下でのの時間差を測定しようと思い
http://toragi.cqpub.co.jp/tabid/284/Default.aspxのマイコンを購入しました。
ソフトウェアとしてHEWを使用しているのですが、C言語のプログラムをどのように書けばいいのかわかりませんでした。
上記の条件を満たすプログラム例があれば回答お願いします。
また、パソコン上にどのように結果を表示させればいいのかも本を読んでも良くわかりませんでした。それについても解説などあればお願いします。
回答・解説・指摘お願いします。
No.2ベストアンサー
- 回答日時:
以前お勧めしたフォトインタラプタは使わずに、フォトダイオードとオペアンプで回路を君だという訳なのですね。
いや、フォトインタラプタなら、マイコンにとって非常に取り扱いの簡単な出力(マイコンにとっては入力)をもらえる訳なのですが、そのあたりを検討されたのか、検討してわからなかったのか謎ですが。
さて、お使いの基板に乗っている、H8SX/1655 は、USB を内蔵しているようなので、マイコン側の設定プログラムを書いて、パソコン側にデバイスドライバをインストールする必要がありそうです。
そのあたりは、ちゃんとしたデータシートを参照する必要があるのですが、最低限、
http://shop.cqpub.co.jp/hanbai/books/MTR/MTRZ201 …
の記事は一通り理解する必要があると思います。
USB であれば、
第6章 無償ツールGDBでプログラムのデバッグ環境を作る
無償ツールGDBによるデバッグの原理
付属基板(MB)とUSB通信するためのUSBドライバをインストール
EclipseからGDBを制御してデバッグする
第7章 USB経由でパソコンと通信する
Windows標準のソフトウェアで通信する
オリジナル・ソフトウェアを作ってバイナリ・データを転送する
に書かれているようですが。
フォトインタラプタなら、デジタル信号として処理できるので、H8SX/1655なら、「インプットキャプチャ」という機能を使えば、入力信号が変化した時点のタイマカウント値を取得することができます。
このあたりも、まずは、データシートを理解する必要があります。
前回の質問に引き続き回答ありがとうございます。
まずはデータシートを読み込んでみたいと思います。
とりあえずは、フォトダイオードでやってみます。
だめだな遥でしたらお勧めのフォトインタラプタを購入しようと思います。
No.3
- 回答日時:
フォトインタラプタというのは私は初めて知りましたが、確かにこちらの方がかなり楽に組めそうですね。
まぁそれはさておきますが、本の内容で出来ることは本の中身で完結しているはずです。
つまり、USB-シリアル変換ドライバが添付CDの中にあるはず。
あるいは、記事をよく読めば「ここからダウンロードしてください」という記述があるでしょう。
あとは#2でも言われている通り、各記事を理解することを最優先にしてください。
そこをすっ飛ばしていきなり目的にたどり着こうとしても碌な事になりませんから。
No.1
- 回答日時:
まず、表示系はUARTを使ってUSB経由でシリアルコンソール(TeraTerm等)で受けることが可能になっているかと思います。
H8のUARTサンプルは探せば簡単に見つかるはずですし、ルネサスのアプリケーションノートにもあったような気がします。
で、本体の方ですが、方針的には
・フリーランタイマーを走らせておく
・オペアンプからの入力を一定間隔でA/D変換する
・A/D値が定常状態から動いていたら、「レーザーが遮られた」ということなのでそのタイミングでフリーランタイマーのカウンタを取得する
という感じでしょうか。
通過しきったところでカウンタを取りたいなら、定常状態から動いた瞬間にフラグを立てて定常状態に戻った時にフラグが立っていたらカウンタを取るようにすればいいでしょう。
差分についてはオペアンプごとにカウンタ値を持っておけば簡単に取れます。
差分を取るタイミングはカウンタを取得した瞬間でいいでしょう。
回答ありがとうございます。
早速Tera Termをインストールして、サイトの使い方を見て、Tera Termを使おうとしたのですが、Tera Termがマイコンを認識してくれません。
マイコンとPCはUSB経由で通信しているのですがポート先をSerialのポート1にしたのですが認識しませんでした。
何故認識しないのかわかりません。どのようにしたら認証されるのか教えてください。素人質問で申し訳ないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- オープンソース arduino ide 2.0.0 について 1 2022/09/19 15:45
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- 教えて!goo 質問サイトで読解力がない奴と話すとイライラします。こういう人の対処法を教えてください。 22 2022/09/12 08:44
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PLCとPCの通信
-
電子工作での高速通信
-
TCNTとTIFRの意味
-
PCからシリアル通信で外部ハー...
-
プログラミングとコンピュータ...
-
Macターミナルで実行中のプログ...
-
C言語で、メモリを解放しないで...
-
緯度、経度の 10進法と 60進法...
-
Excelでのセル内容の高速消去方法
-
指定したフォルダーを最前面表...
-
Socket通信の0バイト受信について
-
このレジの並び方は間違ってま...
-
c言語のサイコロを100回振って...
-
バックグラウンドのプロセスの...
-
スレッドの監視方法について
-
VC++2005で、CString型に16進...
-
ファイルマッピング関数で失敗
-
Excel VBA での処理時間計測結...
-
VC++スレッドの正しい終了のさ...
-
エクセルVBAの自動変換機能?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PLCとPCの通信
-
組み込みマイコンでのソフトウ...
-
レジスタマップって何ですか?
-
PICマイコンのCLRWDT動作について
-
シリアル通信でのデータ取りこぼし
-
マイコンからSDカード内のテキ...
-
機械語のレジスタペアについて
-
H8S2368マイコンのTCSR_1レジス...
-
マイクロ秒で精度が出るタイマー
-
SH7144でパルス幅を測定したい。
-
フラッシュメモリへの書き込み
-
RTCで取得した値をLCDに表示したい
-
システムコールを使わずに画面...
-
グラフィックLCD SG12...
-
2つのアナログ信号が一致して...
-
カーブフィットを行うプログラ...
-
TCNTとTIFRの意味
-
printf文で変数のアドレスを表...
-
printfで0x600000番地の次の0x6...
-
PICマイコンでプログラム!パソ...
おすすめ情報