マイクロコントローラー-出力状態は一定ですか、または多重化されていますか?


14

PWMは明らかにコンピューティングリソースを必要とします(したがって、他のプロセスと同時に行うことはできません)が、ピンを出力5Vまたは0Vに設定した場合、これらの状態は一定のままか、マイクロコントローラーが他のプロセスで動作するときに繰り返し「更新」されます?

これをテキストで説明するのは難しいので、私の質問の類推を考えました。手にグラスを持っていて、テーブルに置くように指示されていると想像してください。その後、椅子に座るように指示されます。

テーブルの上のガラスは状態です。ガラスをテーブルに置いたままにしますか、それともテーブルに戻って座り、非常に素早く繰り返してテーブルからガラスが取り外されたことに気付かないようにしますか?


または、おそらくもっと簡単に、状態の変更を明示的にプログラムしない限り、マイクロコントローラーはピンの状態を「忘れ」ますか?

できれば混乱を招きました。


4
+1おもしろい質問ですが、最初の声明は間違っており、ハードウェアPWMの考え方により、プロセッサを常に関与させる必要はありません。しかし、そのままにしておくと、誰かがそれがすべてどのように機能するかについての良い説明を持っていると確信しています。
PeterJ

PWMは、プロセッサがHIGH / LOWサイクル時間を変更するようなものだと思いました。そのように、プロセッサが直接関与しているように見えます-少なくとも状態が変更される時間。
sherrellbc

1
デューティサイクルを10%から20%に変更するには、CPUが関与する必要がありますが、レジスタを変更するのは数サイクルだけです。ハードウェアPWMの場合、ハードウェアPWM周波数が1MHzであっても20%に変更されると、プロセッサに影響を与えなくなります。
PeterJ

マイクロコントローラーが低レベルでどのように機能するかについてのドキュメントへのリンクはありますか?登録簿へのあなたの言及を理解していないので、これらの答えを十分に理解することはできません。
sherrellbc

1
あまり混乱しない。もっと頑張って!
ラダガスト

回答:


16

私が質問を解釈する方法はPWMとは何の関係もありません、私がベースから外れている場合は申し訳ありませんが、あなたはそれを単なる例として使用したように聞こえます。

I / Oを備えたほとんどすべてのタイプのマイクロコントローラーおよびデバイスは、ラッチ/ FFを使用して出力回路を駆動します。つまり、状態を設定すると、その状態のままになります。DRAMのように、状態を維持するために出力統計を絶えず「更新」する必要があることはありません。

ガラスの例では、テーブルの上にガラスを繰り返し載せたり置いたりするハードウェアを見たことはありません。ガラスをテーブルの上に置くだけで、状態の変更が要求されるまでそのままにしておきます。

PWMに戻る(実際にPWMについて質問している場合に備えて)。Bitbangを使用する場合でも、マイクロコントローラが他の記事で説明した専用ハードウェアを使用する場合でも、コードまたはPWM周辺機器を実行して状態の変更が要求された場合にのみI / Oブロックにアクセスして変更します。


これは正確に私の質問ですが、マイクロコントローラには私が理解していないことに気付いていないことがたくさんあります。
sherrellbc

3
鼻をデータシートに入れて、実験し、質問するだけです。あなたはそれのこつを得ます。
クリスバーンセン

11

マイクロコントローラーは出力を更新する必要はありません。設定されると、状態は無期限に保持されます(電源が切断されるまで)。古いプロセッサでは、プロセッサの状態を維持するためにクロックが必要でしたが、今日のプロセッサは完全に静的と呼ばれるものです。つまり、クロックを実際に停止でき、すべてが現在の状態のままになります。これは、すべてのレジスタ(I / Oを含む)がフリップフロップを使用して作成されているためです。


そして私たちは進歩しています!感謝は今より理にかなっています。ありがとうございました!
sherrellbc

10

最新のマイクロコントローラーのほとんどは、PWMを処理する専用のハードウェアPWM周辺機器を備えています。

プロセッサコアは、周辺機器に「このピンを10kHzおよび50%のデューティサイクルでトグルする」と伝えます。その後、コアは他のことを自由に行うことができます。それは割り込みを設定するかもしれません、すなわち、興味のある何かが起こるとき、それを伝えるために周辺機器を頼みます。
コアを「ボス」、周辺機器をスペシャリストワーカーと考えることができます。コアはプログラム全体を管理し(各命令を読み取り、その命令に基づいて動作します)、周辺機器にさまざまなタスクを実行し、完了時に通知するよう「要求」します。

あなたの例えでは、他の人がグラスを持っているようで、椅子に座って自由にテーブルの上に置くように指示します。

マイクロに専用の周辺機器がない場合、「手動」で(つまり、それ自体)、ピンの状態とトグル間のタイミングを追跡する必要があります。これは、単純な周辺機器で簡単に処理できる、かなりささいなもの専用の多くのサイクルを意味します。

一般的な8ビットマイクロコントローラであるPIC16F690のレイアウト図を以下に示します。下部に配置された周辺機器に注意してください。

enter image description here


そのような周辺コンポーネントが存在することに気づきませんでした。それで、これらのコンポーネントはかなり小さいプロセッサーですか?そのようなものが存在することは非常に理にかなっています。
sherrellbc

プロセッサではなく、周辺機器は特定のタスクを実行するために特別に設計された専用のハードウェアブロックに似ています。例えば、典型的なマイクロなどADC、PWM、タイマ、UART、SPI、などのボード周辺機器の有するであろう
オリグレイザー

これらのシステムについての私の理解は確かに偏っていますが、私は間違いなくこの主題を深く掘り下げます。私は、uCがすべての処理を行うという印象を受けました。周辺機器に与えられた「指示」を解釈する必要があります。これは私が完全に理解していないところだと思います。
sherrellbc

2
典型的なマイクロの図を追加しました-読み始めるのに適した場所はデータシートで、これもリンクしています。
オリグレイザー

@sherrellbcは、プロセッサとマイクロプロセッサが異なる場所です。µCでは、たとえばRAM、ROM、ALU、シリアルポートなどがすべて同じチップに統合されていることがわかります。PCでは、プロセッサがそのような回路に外部接続されていることがわかります。
chwi

5

正確に有効ではないいくつかの仮定を行っています。また、はい、あなたは質問をできるだけ混乱させました。真剣に。

PWMは他のプロセスと同時に実行できます。ソフトウェアで行う場合、タイマー割り込みを使用してGPIOピンでPWM信号を生成します。他の割り込みが実行される可能性があり、メインプロセスは無関係なことを実行しています。また、多くのMCUはタイマー周辺機器で直接PWMを実行できるため、MCUは他のことを行うことができます。

I / Oピンに関しては、多重化されています。しかし、それらがどのように多重化されるかを制御するので、それは実際には問題ではありません。


PWMタイマー割り込みに関するコメントを理解しています-それは理にかなっています。このようにして、プロセッサは出力状態を変更するときにのみ関与します。ただし、I / Oピンは多重化されていると言います。つまり、コントローラーをプログラムしてピンをHIGHに出力し、他の無関係な計算を実行すると、そのようなプロセスが実行されている間、ピンは一時的にLOWに設定されますか?
sherrellbc

@sherrellbcピンの多重化方法を制御しています。通常は、ブート時にそれらを構成し、その後は変更しません。したがって、特に指示しない限り、「瞬間的に低い」ことはありません。

PWMの例を追加することで読者を混乱させた場合、私は謝罪します。この質問の目的は、HIGHに設定されたI / Oピンがコントローラーによって多重化されているかどうかを判断することです(つまり、ピン状態を絶えず「リフレッシュ」し、一度に1つの操作のみを行う必要があるため)。しかし、今では、マイクロコントローラーには理解できないことがたくさんあることに気付きました(周辺機器)。したがって、答えは「いいえ」であり、出力ピンは状態に設定され、変更されるまでその状態のままになります。
sherrellbc

1

マイクロコントローラーのI / Oピンのほとんどは多機能ですが、私はそれらを多重化とは呼びません。

たとえば、AVRのいくつかのピンは、デジタル入力、デジタル出力、またはアナログ入力として使用できます。通常、プログラムの初期化の一部として目的の機能を選択し、後で変更することはありません(ただし、同じ信号を表示するためにアナログ入力をデジタル入力に変更する何らかの理由があります)。

デジタル出力の場合、ピンが出力になるように設定されると、プロセッサが最後に書き込んだ値が保持されます。定期的に「リフレッシュ」する必要はありません。


プロセッサが値を設定し、その値を削除し、他の命令を実行し、ループして元の値を再度設定すると、それらは多重化されます。これが私の質問の本質です。ただし、上記の回答から、これらの機能を実行するさまざまな周辺機器が存在し、プロセッサは、別の指示があるまでそれとは何の関係もありません。私はこれについて全く知りませんでした。学ぶことがたくさんあります。答えてくれてありがとう。
sherrellbc

1

マイクロコントローラーハードウェアPWM周辺機器の簡単な例では、8ビットカウンターを8ビットデジタルコンパレーターに接続できます。マイクロコントローラーは、数値をコンパレーターにロードし、システムクロックまたはそのプリスケール分割バージョンでカウンターをインクリメントします。その後、カウンターは0から255までカウントし、繰り返しゼロに戻るフリーランになります。コンパレータには、カウンタ値がコンパレータ値より大きいか小さいかを示す出力があります。これがPWM出力になります。PWMの周期は、カウンタがカウントサイクルを完了するのにかかる時間であり、デューティサイクルは、合計カウントの何分の一がコンパレータ値で表されるかです。マイクロコントローラのコードは、ハードウェアを最初にセットアップし、pwmの変更が必要な場合にコンパレータデータを変更する以外は何もしません。PWMは、プロセッサーに注意を払わずにPWMパルスの連続ストリームを出力します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.