MC9S08SH4 でギャング出力の実験 [HCS08]
MC9S08SH4の20ピンDIPパッケージが、ようやく手に入りました。 ご覧のようにブレッド・ボードにもぴったりです。 まずは、LEDピカピカですね。
ギャング出力という妙な機能
MC9S08SH4は、良くある汎用マイコンです。 電源電圧が2.7Vから5.5Vの範囲なので、最近のS08マイコン・シリーズですね。 仕様書を読んでいると、パラレル I/O の所に「Ganged Output」という記述がありました。 何じゃ、こりゃ?
仕様書を読んだところ、最大8本のポートを束ねて、一本の強力な出力として使う機能なんだそうです。 最大出力電流は、直接的には書いてありませんが、「Max total IOL for all ports」(最大全ポート総 IOL )の 100mA が最も厳しそうです。
ポートの本数を変えて白色LEDを光らせる
定格20mAの白色LEDを使って、束ねるポート本数を変えながら電流とポート出力での電圧降下を測定してみました。 電源電圧には実測 5.1V のニッケル水素電池4本、電流制限抵抗は実測 87.1Ω の抵抗を使いました。
本数 | VOL (V) | VR (V) | IOL (mA) | RON (Ω) |
---|---|---|---|---|
1 | 0.735 | 1.435 | 16.48 | 44.60 |
2 | 0.435 | 1.685 | 19.35 | 22.48 |
3 | 0.318 | 1.782 | 20.46 | 15.54 |
4 | 0.256 | 1.835 | 21.07 | 11.80 |
5 | 0.215 | 1.871 | 21.48 | 10.01 |
6 | 0.188 | 1.894 | 21.75 | 8.64 |
7 | 0.167 | 1.910 | 21.93 | 7.62 |
8 | 0.143 | 1.928 | 22.14 | 6.46 |
マイコンのポートでの電圧降下が VOL です。 ポート本数を増やすと徐々に減っていくのがわかります。
電流制限抵抗での電圧降下が VR です。 この電圧から求めたのが、出力電流 IOL です。
マイコンのポート出力の等価抵抗 RON は、 VOL を IOL で割ると求まります。 束ねたポート本数にほぼ反比例して抵抗値が減っていきます。 完全に反比例になっていないのは、 VSS あたりの共通インピーダンスの影響でしょう。
調子にのって
この実験では、100mA 流せるはずのポートに 22mA しか電流を流していませんでした。 100mA も流せるのであれば、「もしかしたら豆電球が点灯するんじゃないか」と思って 30Ω の電流制限抵抗に 4.8V 0.3A のクリプトン球をつなぎました。 しかし、さすがに点灯する様子は観測できませんでした。 豆電球のインピーダンスがあまりにも低すぎたようです。 残念。
さて、他にはどんな使い道が考えられるかな?
参考文献
この本には、ギャング出力についての記述はあるのですが、仕様書に書いてある以上の事は書いてありません。 もっと、怪しいことはできないかな?
HCS08 Unleashed: Designer's Guide to the HCS08 Microcontrollers
- 作者: Fabio Pereira
- 出版社/メーカー: Booksurge Llc
- 発売日: 2007/11/13
- メディア: ペーパーバック
noritanさん、こんばんは。
> ギャング出力という妙な機能
いわゆる普通のマイコンやデジタルICでも出力端子を並列にして電流を稼ぐということを(本当はよくないのかもしれませんが)割とよくやってしまいます。
わざわざ機能として持っている以上、単純に並列につなげるだけというわけではないのでしょう。
確かに何か怪しげなことが出来ないかと考えさせられる機能ですが・・・なかなか面白そうなアイデアは思い浮かびませんね。
by gomisai (2009-02-24 03:28)
汎用ロジックICの場合には、「同一パッケージのゲートすべてを使う」ことを条件として使用が許容されています。と、ここまで書いて証拠を探したのだけど、見つかりませんでした。あの条項は、無くなっちゃったのかな?
汎用ロジックの場合、同一ウエファに作られているので、特性が揃って温度条件も等しい(熱結合された)素子になります。そのため、並列接続してもすべての素子が同じように動作してくれます。
ところが、マイコンのポートの場合、マイコン内部のクロックにしたがって動作しているとはいえ、それぞれの出力ポートは、特性が異なってきます。そもそも別々に使われる事を前提としているので、ムリに合わせる必要もないのです。そのため、出力同士をつないだ場合には、ポート間で貫通電流が流れたって文句は言えません。
MC9S08SH4の場合、どうやっているかは不明ですが、複数のポートの特性を合わせて束ねて使えるようにしたということなのでしょう。また、ギャング出力設定レジスタは、「リセット後一回だけ書けるレジスタ」なので、あらかじめ設定しておけば、プログラムが暴走したとしても安心です。
豆電球ほどではないにしろ、そこそこ電流が欲しい用途、何かありませんかね。
by noritan (2009-02-24 09:15)
マイコン/ロジックICの別に関わらず、MOSFETの温度係数は正なので並列にすることができ、バイポーラトランジスタの温度係数は負なので並列にすることが出来ない・・・というのが私の素人考えでした。
とはいえ、これも出力電流のかたよりを緩和する傾向を持っているというだけの話なので、確かにそれ以前のFETの特性の段階でそろっていることが必要ですね。
> 豆電球ほどではないにしろ、そこそこ電流が欲しい用途、何かありませんかね。
特徴としては「外付けトランジスタなどを省略することが出来る」ことと「シンク・ソースともに可能」といったところでしょうか。
とすると、光モノよりも音モノの方が相性が良いかも?という気はします。
by gomisai (2009-02-24 23:52)
え~と、どこまで書こうかな。
マイコンのCMOS出力ポートは、ご存知だと思いますが、PMOS(FET)とNMOS(FET)で出来ています。PMOSがVDDレベルを出力し、NMOSがVSSレベルを出力します。これら二つの素子は同時にONすることはありません。もし、同時にONしてしまうと、PMOSとNMOSを介してVDDとVSSがつながり、大電流が流れてしまうからです。これを貫通電流(Shoot-Through Current)と呼んでいます。ポート出力の状態が変化する時には、過渡的に貫通電流が流れる可能性があります。
半導体は、温度や製造ばらつきによってPMOSとNMOSがON/OFFするタイミングが異なってきます。条件によっては、同じウエファ内でもばらつきが出ます。そのため、貫通電流を防ぐためには積極的な貫通電流防止機構を備えることになります。
この機構は、通常、特定のポートのPMOSおよびNMOSでの貫通電流を考慮して考えられています。そのため、複数のポート間のタイミングまでは補償できず、複数の出力ポートが直接接続された場合には、それぞれのポートのPMOSとNMOSのON/OFFタイミングによって、ポート間に貫通電流が流れる可能性があります。
貫通電流を防ぐには、ポート出力の状態を切り替える時にその途中に高インピーダンス状態をはさむとうまくいきます。ソフトウェアで操作すると遅くなりそうですね。
http://japan.maxim-ic.com/glossary/index.cfm/Ac/V/ID/1040
電気/電子用語の定義:Shoot-Through Current
MAXIMさん、良いページをお持ちなのだが、日本語がこなれていないな。
by noritan (2009-02-25 09:18)
ギ、ギャグ出力、、、
by hamayan (2009-02-25 12:59)
なるほど、丁寧な解説ありがとうございます。
> 貫通電流を防ぐには、ポート出力の状態を切り替える時にその途中に高インピーダンス状態をはさむとうまくいきます。ソフトウェアで操作すると遅くなりそうですね。
ということは、逆にLEDとかの切り替え速度を気にしない用途でなら、普通のマイコンでもこの方法で出力を束ねることが出来そうですね。
by gomisai (2009-02-25 22:43)
束ねたすべてのポートを高インピーダンス状態にすると、別の問題が発生するかもしれませんので、一つだけ出力を生かしておくとより良いでしょう。
1. 8本 LOW ドライブ
2. 1本だけ LOW ドライブ
3. 1本を HIGH ドライブに切り替え
4. 8本 HIGH ドライブ
これらは切り替え時に変なグリッチが発生しないことを前提にしています。
by noritan (2009-02-26 08:18)