ATtiny10 用プログラム (18)

ATtiny10 の 6 番ピン (PB3) の特性を測定するのに使った回路を下に示します。
外部から PB3 に電圧を与えて、PB3 側に流れ込む電流 (シンク電流) の向きを「正」とし、ソース電流の場合は「負」とします。
電流検出回路を構成して、電圧値として読み出すことも考えたのですが、正負両方向に対応する必要があるので、簡単のため、図のようにそれぞれ電流計と電圧計を使用する構成にしました。

測定は手動でボリウムを回して電圧を 0.5 V 程度のステップで上げながら、電流値を電圧値を記録していきます。
回路で必要な OP アンプは 2 個ですが、電源電圧 12 V で使用可能なレイル・ツー・レイル OP アンプは、手持ちでは 4 個入りの LMC6484 しかなかったので、それを使っています。
測定は、RSTDISBL の状態で PB3 端子の状態を次の 4 通りのいずれかに設定するプログラムを書き込んで、それぞれの場合について行いました。

  • PB3 は入力、プルアップなし (ハイ・インピーダンス)
  • PB3 は入力、プルアップあり
  • PB3 は出力、出力値は「1」 (Vcc 5V 電源レイル)
  • PB3 は出力、出力値は「0」 (GND レイル)

まず、入力モードの 2 通りについての結果のグラフを下に示します。

横軸が PB3 端子に流れ込む電流、縦軸が PB3 端子の電圧です。
したがって、線の傾きが「微分抵抗」を表しています。
青い線がプルアップあり、赤い線がプルアップなし (ハイ・インピーダンス) です。
赤い線のハイ・インピーダンスの場合には、PB3 の電圧 0 V 〜 5 V までは、当然、電流はゼロで、グラフとしては垂直線 (インピーダンス無限大) となっています。
青い線のプルアップありの場合の 5 V 以下の電圧の領域で傾きを求め、プルアップ抵抗値を推定すると約 40 kΩ となります。
この「プルアップ電流」は、電源レイルの 5 V に達する手前の 4.7 V 程度でほとんどゼロになります。
当然ですが、これは、ATtiny10 のデータシートの「17. Typical Characteristics」の「Figure 17-18. Reset Pull-up Resistor Current vs. Reset Pin Voltage (Vcc = 5V) 」のグラフと同じ傾向を示しています。 (グラフの縦軸と横軸は入れ替わっています)
データシートの他の入出力ピンのグラフを見ると、5 V 電源レイルに達したところで電流値がゼロになっていますから、当然ですが、PB3 のプルアップ回路は他のピンの回路とは違っていることが分かります。
PB3 の電圧が電源レイルの 5 V を超える領域では、プルアップあり/なしで差は見られず、グラフは全く重なっています。
つまり、PB3 の電圧が 5 V 以上では、通常のプルアップの回路は「切り離される」ことが分かります。
5 V では電流値はゼロで、5.5 V になって電流値は約 0.5 μA となり、電流が流れ始めます。
これはシリコン・ダイオードの特性の「立ち上がり」の電圧に相当し、高電圧側のプルダウン抵抗にはシリコン・ダイオードが直列に接続されているであろうことを示唆しています。
ここで、PB3 に入力する電圧は電源レイルの 5 V を超えているので、Vcc との間に設けられている「プルアップ抵抗」は、この場合、5 V への「プルダウン抵抗」として作用することに注意してください。
電流値 100 μA 程度以下の部分で高電圧側のプルダウン抵抗の値を推測すると約 25 kΩ となります。
通常の 5 V 以下の「プルアップ抵抗」と、高電圧側の「プルダウン抵抗」とには、それぞれダイオードが挿入されており、PB3 の電圧値 5 V を境として切り換わり、お互いに干渉しないものと思われます。
電流値で 150 μA 付近、電圧値で 10 V 近くの部分で、グラフのスロープが変化しているのが読み取れますが、これは、「12 V モード」の検出回路による影響だと思われます。
後で示す出力モードでのグラフには、はっきりと表れていますが、このスレシホールド電圧は 9.4 V 〜 9.5 V 程度になっています。
また、これも後で示しますが、このスレシホールド電圧は電源電圧に依存しています。
下に出力モードでの 2 通りの結果のグラフを示します。

このグラフでは、横軸の電流の単位が mA に変わっています。
青い線が「1」(Vcc 電源レイル) を出力した場合で、赤い線が「0」(GND レイル) を出力した場合です。
青い線の「1 出力」の場合には、PB3 電圧が 5 V 電源レイルに達する前に電流値がゼロになっています。
当然のことながら、これはデータシートの「Figure 17-26. Reset Pin as I/O, Output Voltage vs.Source Current」のグラフと傾向が一致しています。 (定義の違いにより電流の符号が逆)
つまり、PB3 を出力ピンとして使って「1」を出力する場合、比較的に小さい出力電流でも 5 V いっぱいまでは電圧が振れないということを示しています。
青い線の「1 出力」の場合、5 V を超える高電圧側では、入力モードの場合と全く同じグラフとなっています。 ただし、図の mA 単位のスケールでは、良く見えません。
赤い線の「0 出力」の場合には、PB3 の電圧を上げていくとソース電流値も増加していきますが、約 11 mA で頭打ちとなり定電流性を示します。
5 V を超えても 11 mA 程度の電流が流れ続けますが、 7 V 程度から再び増加し始め、9.5 V 付近で急にゼロに近づきます。
この 9.5 V 程度の電圧が「12 V モード」のスレシホールド電圧です。
急に電流値が下がるのは、スレシホールドを超えるとリセット状態になり、プログラムの実行が停止し、ポートの状態がハイ・インピーダンスに設定され、外部から電流を引き込まなくなるためです。
12 V リセット・モードに移行した後の電流値は、他の 3 つの場合と同じ経過をたどります。
リセットが掛かってから、PB3 の電圧を下げていき、スレシホールドを下回るとリセットが解除され、再びプログラムが走りだします。
ボリウムを手で回して電圧を設定しているので、高い分解能は得られず、スレシホールド電圧のヒステリシスの幅については不明です。 ただ、数百 mV に達するような大きなものではないことは言えます。
最後に、電源電圧 5 V および 3 V で入力モード、プルアップありの状態にした場合のグラフを下に示します。

都合で電源電圧 3.3 V ではなく 3 V になっています。
電源電圧 3 V では 12 V モードのスレシホールド電圧は約 6.8 V です。 ただし、入力モードなので、グラフからは読み取れません。