タグ付けされた質問 「timing」

4
delay(time); vs if(millis()-previous> time); そしてドリフト
古いプロジェクトを通過すると、次のようなコードが2つのArduino Dueにありました void loop() { foo(); delay(time); } 心に取って大多数の文献を使用してdelay();、私としてこれを再コード void loop() { static unsigned long PrevTime; if(millis()-PrevTime>time) { foo(); PrevTime=millis(); } } ただし、これにより、2つのデバイスが以前はドリフトしなかった期間にドリフトする状況が発生したようです 私の質問は2つあります。 なぜif(millis()-PrevTime>time)よりドリフトを引き起こすの でしょうdelay(time)か? 戻ることなくこのドリフトを防ぐ方法はありdelay(time)ますか?

2
pulseIn()のタイミングはどのくらい正確ですか?
pulseIn()PWMベースのバイナリデータエンコーディングを処理する関数を使用しています。これは、長さが大きく異なるパルス、たとえば500usと1500usを区別するのに適しています。これは、典型的なIRリモコンの処理には十分すぎるほどです。 しかし、2つ以上のパルス長を使用できる独自のIRシステムを作成して、データ転送をより高速に実行できるようにしたいと考えています。理想的には、8進エンコーディングに8つの異なるパルス長を使用したい(例:200us、400us、600usなど)。 pulseIn()ただし、返される値にはかなりのばらつきがあることに気付きました(+/- 10%)。少なくとも一部はIRトランスミッターおよびレシーバーモジュールによって導入されると思いますが、それを確認するのに十分な設備がありません。 その外部エラーを軽減できると仮定すると、そのpulseIn()ような同様のパルスを区別するのに十分正確である可能性がありますか?
8 pwm  pulsein  timing 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.