位相差100nsの1MHzの波を3つ発生させたい!OCモードでそれらを生成するのは正確ですか? つまり、OC を少しずつ増やして 3 回、大きなステップで 4 回増やし、これを続けて、各 ISR で I/O ポートを切り替えます (合計 3 つの I/O ポートが切り替えられています)。 )しかし、私の質問は、このプロセスが正確かどうかです?! または、このプロセスで失われているクロックがありますか?!
2 に答える
いいえ。ただし、OC で生成された波形はそれ自体正確であり、プログラムの実行とは無関係ですが、遅延には当てはまりません。ステートメントの長さを考えてみてください。ただし、ほとんどのステートメントは 1 サイクルの長さで、一部はそれより長く、マルチサイクル ステートメントの途中で割り込みが発生しない場合があります。OC ベースのタイミングは異なります。タイマー ハードウェアによって実行されるため、マルチサイクル ステートメントの途中でも発生する可能性があります。答えを要約すると、一次波形は正しくなりますが、遅延波形はジッターします。
マイクロコントローラの PWM (パルス幅変調) 機能を調べる必要がある場合があります。それを使用してこれらの波を設定できる場合があります。異なるタイマーユニットでそれらを実行する必要がある場合でも、タイマーは同じソース (マイクロのオシレーター) によってクロックされる可能性があるため、それらを同期する手段がある場合があります。このように。
100ns は非常に短い時間です。これを有効にするには、10MHz の発振器が必要です。マイクロがサイクルごとに 1 つの操作を実行でき、それを直接チェックしたい場合は、後続の命令で 3 つのピンをトグルする必要があります (それぞれ 1 サイクルかかります)。これは可能ですが、非常に慎重な設計が必要です。割り込みなどは 100ns を刻むのに問題外ですが、ピン変更タスクをスケジュールするためにそれらを巧妙な方法で利用することができます。これを行う方法は、正確に何を達成したいかによって異なります。
(私はかつて、4 サイクルで 1 つの操作を実行する 40MHz PIC を搭載した 1.5MHz のマイクロバスからデータを盗む必要がありました。このデータは、わずか 300ns の間サンプル可能でした。私はそれを動かすことができ、問題なく動作しました。このピンの変更ビジネスも確かに可能ですが、非常に慎重な設計が必要です)