5

AtmelAVRマイクロコントローラーに関する簡単な質問です。そこで、ATTiny85のアナログコンパレータを使用して、信号がしきい値を上回っているか下回っているかを判断したいと思います。この信号は通常「フローティング」であり、「アクティブ」のときはグランドに向かって引っ張られます(つまり、アクティブロー-オープンコレクタ信号です)。入力ピン(コンパレータ入力でもある)のプルアップを有効にするには、次のようにします。

DDRB  = 0x00; // DDRB.1  = 0 = input 
PORTB = 0xFF; // PORTB.1 = 1 = internal pullup enabled

アナログコンパレータを使用し、AIN1としてPORTB.1を選択した場合、内部プルアップが入力信号に適用されますか?私は誰かがこの振る舞いを検証するための個人的な経験を持っていることを望んでいます。この質問がスタックオーバーフローに対して「ハードウェア指向」ではないことを願っています。ありがとう!

編集 「デジタルで扱ってみませんか」という以下のコメントのいくつかに応えて、それは私の「信号」がセンサー(つまり光IRセンサー)によって生成されているためです。デジタルでゼロとして解釈されるのに「十分にハード」にプルダウンされるとは保証できないので、スイッチングしきい値として内部2.56Vリファレンスを使用します。私は「IRイベント」を取り上げようとしているだけなので、これが私にとって最も簡単な方法のように思えました。

また、アナログコンパレータを使用することで、ISRを使用して「非同期に」イベントを検出できます。一部のピンはデジタルエッジで割り込みを呼び出すことができますが、V_ILを下回る応答に依存することは望ましくありません。

4

3 に答える 3

4

From the datasheet figure 10-5 you can see that the input to the analog stage is affected by the pull-up.

Thus you can use the internal pull-up together with the comparator. As mentioned by the datasheet, you might want to disable the digital input stage of that port to reduce power consumption - of course only if you don't use it for digital input.

Note: Floating pins can cause huge current consumption for the digital input stage. Try to avoid them.

于 2010-04-08T09:46:57.113 に答える
2

あなたはデジタル入力信号を持っているように見えるので、通常はプルアップでデジタル入力を使用します。

アナログ入力を使用する理由はありますか?

于 2010-04-08T07:01:45.660 に答える
2

それが機能するという事実については言えませんが(あなたが説明しているケースを行ったことはありません)、電子的に言えば、あなたの推論は健全です. スイッチが開いている場合、AIN1 は内部プルアップを介して VCC を認識し、スイッチが閉じている場合、両方とも 0V を認識します。

VCC
|
100k(?)
|
AIN1
|
 /
|
GND

そのプロセッサのデータシートを実際に読まないと、アナログ入力用に構成されたピンで内部プルアップを使用できない可能性があります。その場合、プルアップ用のデジタル入力として構成されたチップ上の別のピンを使用できる場合があります。

VCC
|
100k(?)
|
Other---AIN1
        |
        /
        |
        GND

しかし、AIN1 の電圧が常に「ロジック ハイでもロジック ローでもない」範囲にある場合、消費電流がかなり高くなる可能性があります。

于 2010-04-08T03:27:09.980 に答える