質問

超音波センサについてなのですが、パラレルポートを使って制御しようとしているのですがなかなかうまくいきません。

浅草ギ研さんからでているPING)))を使っているのですが、サンプルプログラムがPICを使用してのもので、
トリガをうってやれば、350マイクロ秒ホールドオフした後、音波を出して帰ってきた時の時間で距離を出すというものです。
プログラム全文

#include <12F675.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOMCLR,BROWNOUT//内部4MHzクロック指定
#use delay(clock=4000000)//delayを使えるようにする
#use rs232(baud=9600,xmit=PIN_A5,rcv=PIN_A3,parity=N,bits=8)//シリアル設定
//(上の行説明)GP5を送信、GP3を受信に設定。
//12F675の場合は初期値がADCモードになっているので、デジタル入力を使う場合は事前にADCなどを切る必要がある。
//16F84などのPICはこの処理は不要。(初期値がデジタルIOだったり、ADCが無かったりする。)
//コンパレータとADCを切るために特殊レジスタを操作します。とりあえずアドレスを割り当て。(アドレスはデータシートに書いてある)

#byte CMCON=0x19
#byte GPIO=0x05
#byte ANSEL=0x9F

void main(void){ 
set_tris_a(0x00);

output_low(PIN_A0);//GP0をLowに(とりあえず。)
//コンパレータなどを切って、デジタルIOピンにする処理
GPIO=0x00;//以下3行はデジタルIOに切り替える手順
CMCON=0x07;
ANSEL=0x00;
//タイマ0を設定(内部クロック使用の場合は4クロックで1カウントなので注意)
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_128);
delay_ms(1000);//PINGが正常に立ち上がるまで待つ
printf("START\r\n");
while(1){
set_tris_a(0x00);//GP0を出力に
//トリガパルス出力
output_high(PIN_A0);//トリガパルス立ち上げ
delay_us(5);
output_low(PIN_A0);//トリガパルス立ち下げ
//GP0を入力に切り替え
set_tris_a(0x01);//GP0を入力に
//パルス幅測定
while (!(input(PIN_A0)));//パルス立ち上がりまで待つ
set_timer0(0);//タイマーをリセット(カウント開始)
while (input(PIN_A0));//パルスの立下りまで待つ
printf("Dist=%u\r\n\r\n",get_timer0());//結果出力
delay_ms(500);//0.5mSウェイト
}
}

こんな感じです。
全体的にわからないんですが、
特に
while (!(input(PIN_A0))); //パルス立ち上がりまで待つ
set_timer0(0);//タイマーをリセット(カウント開始)
while (input(PIN_A0));//パルスの立下りまで待つ

この部分のlinuxのC言語への書き換え方がわからなくて苦労しています。
どなたか教えてもらえないでしょうか?

OSはVine linuxです。言語はC言語です。

通報する

回答 (1件)

PICで処理しているプログラムをLinuxで実現しようというのはかなり無理なこと言っていると思います。というのは、PICのプログラムはPICが持っている周辺回路のタイマを使って時間を管理しているためマイクロ秒単位やミリ秒単位の時間を待つのに問題ありませんが、Linuxの時間管理はもっと粗い精度しか期待できないからです。

参考 http://d.hatena.ne.jp/naoya/20080122/1200960926

特に、トリガをかけてから音が返ってくるまでの時間で距離を測りたいわけですから、時間の管理が正確にできないのは致命的です。Linuxで実現するのはあきらめて、PIC(または使い方の分かるマイコン)を使うことをお勧めします。

この回答へのお礼

ありがとうございます。

確かにgettimeofdayでやっていたのですが、うまくいってませんでした。

やりかたを変えて挑戦したいと思います。

貴重なご意見ありがとうございます。

このQ&Aは役に立ちましたか?0 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

フリーアナウンサー長谷川豊氏の新コーナー「このニュースどう思います?」がスタート!

元フジテレビのフリーアナウンサー長谷川豊氏から気になるニュースについておしトピの皆さんに質問します! 皆さんの意見をもとに長谷川豊氏がコラムを執筆します! アプリリリース記念として最大1万分のアマゾンギフト券プレゼントキャンペーンも実施中!

このQ&Aを見た人が検索しているワード


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集