掲示板トップ > 記事閲覧
【旧BBSから移行】Raspberry Pi でのLチカの速度について
投稿日 | : 2019/06/05(Wed) 17:11 |
投稿者 | : ryo |
初めての投稿になります。電子工作初心者です。
電子工作で高速ストロボ撮影ができないかと思い、Raspberry Pi B+を購入して簡単なLチカ回路を作って点滅させてみましたが、オシロスコープで確認したところ周波数が設定値に届きません。
理想は200kHzで点滅させたいのですが、C言語でコードを書いても7〜8kHz程度にしかなりません。
なにか解決法がございましたらご教授お願いいたします。以下C言語のコードになります。
#include <wiringPi.h>
#define GPIO25 25
int main(void){
int i:
if(wiringPiSetupGpio() == -1) return 1;
pinMode(GPIO25, OUTPUT);
for(i=0; i<100000; i++){
digitalWrite(GPIO25, 0);
delay(2.e-3);
digitalWrite(GPIO25, 1);
delay(2.e-3);
}
digitalWrite(GPIO25, 0);
return 0;
}
Re: 【旧BBSから移行】Raspberry Pi でのLチカの速度について
投稿日 | : 2019/06/05(Wed) 17:31 |
投稿者 | : 中の人1号 |
投稿元IPアドレス | : |
投稿元ホスト | : |
ryoさんこんにちはー。
digitalWrite()関数にしても、delay()関数にしても、C言語の関数呼び出しにはそれだけで結構な時間(オーバーヘッド)がともなってしまいます。
Raspberry Piはマイコンでは超高速な部類に入りますが、上記の理由によりまして、200kHzの点滅速度は、ソフトウェアによる点滅制御では到達が困難なのではないかなという感覚があります。
代わりに、ハードウェアで生成する方法もあります。
ソフトウェアはいちど設定するだけで、あとはハードウェアが点滅制御してくれるわけです。
この方法ではご提示いただいたような発光回数の制御はできないという弱点もありますが。
ハードウェアによる方法はPWMと言いまして、素早くオン/オフを繰り返し、オン/オフの時間比率を変えることでアナログに近い制御をするものです。
GPIOピンによってPWMの対応の有無がありますので、もしかしたらピンを変える必要があるかもしれません。
PWMの設定方法は、Webに多く情報があります。
「wiringpi pwm」で検索されるとたくさん見つかります。
こちらもわかりやすそうです↓
https://qiita.com/cel54521/items/ea2eaa7e468d1baf3065
Re: 【旧BBSから移行】Raspberry Pi でのLチカの速度について
投稿日 | : 2019/06/05(Wed) 18:38 |
投稿者 | : ryo |
投稿元IPアドレス | : |
投稿元ホスト | : |
お返事ありがとうございます!こんなに早く回答がいただけるとは思いませんでした。
やはりソフトのリアルタイム制御では難しいのですね。
電子工作については初心者なものでPWMは初めて聞きました。
ご丁寧に教えていただいた情報を参考に勉強させていただきます。ありがとうございました。
Re: 【旧BBSから移行】Raspberry Pi でのLチカの速度について