電子工作好きな方々が運営されているブログを拝見していると、「ATtiny〇〇のRESET端子は外部Pull Up抵抗不要」という記述を頻繁に目にします。
開発案件でたまたま遭遇した内容を元に、メーカーであるMicrochip社への質疑回答を行い、正しい情報を綴ってみたいと思います。
RESET端子とは?
RESET端子とは、RESETを発動制御するための端子となり、どのマイコンにも基本的に用意されている端子と言える(RESET端子がないものもあります)。
LOW Activeとなり、LOW状態の間はマイコンがRESET状態となります。
例えば、タクトSWを用意して、SW押下することでマイコンをRESETしたり、システムに応じた使い方が検討されます。
RESET端子のハード要件は?
LOW Activeなので、通常駆動させたい場合はHIGH状態を保つ必要があります。
HIGH/LOWの論理を明確に設定しなければ、マイコン状態も不定になってしまいます。
今回対象としているATtiny806を確認してみましょう。
以下は、公式仕様書の抜粋ですが、マイコン内部にPill-up Resistorが存在しています。
この内部抵抗は、PORでReset Start時に有効となるようです。
しかし、起動後にも継続して有効状態なのかはわかりません。
各I/Oには内部Pull upがあり、プログラムから有効/無効が設定できるので、RESET解除後の初期化処理内で、RESET端子の内部pull upを有効設定にしてみましたが、RESETが掛からない個体は変わらず、RESETが掛かりませんでした。
巷のブログなどで勘違いをされているのが、次の内容になります。
表内の最下部にある「RRST」が20~60KΩと書かれており、RESET端子の内部抵抗値だと勘違いされる方が多いようです。
項題の如く、外部リセットの特性を規定したものなので、基本的にはRESET端子に対して外部Pull up抵抗を設ける際、20~60KΩで乗数設定範囲を指定されています。
外部Pull up抵抗が無いとどうなるの?
今回、弊社案件でも開発時に懸念となったのはこの要素である。
外部Pull upが無くとも、ほとんどのATtiny806は問題なく動作してしまう。
ただ、複数台生産した場合、ポロポロ動作がおかしなマイコンが出てくる。
10台程度の試作でも、動作が一意にならない、、、
同じプログラムを書き込んでいるにも関わらず、動作に個体差が生じるのはハード側のバグと思われ、解析を進めるものの結果的に分からず、RESET端子の抵抗について、Microchip社へ代理店を通じて詳細質疑することとなりました。
ATtiny806のRESET端子には、外部Pull upは必須!!
代理店側のFAEでも同じ様な検証を頂き、外部pull upが無くても正常動作がされ、何ら問題ないマイコンの動きであるとの回答が得られた。
しかし、こちらの手元の数台においては、他の基板と挙動が異なり、RESET端子をLOWに落としても、RESETが掛からない。
つまり、同一回路・同一ソフトではあるが、RESETが正常に掛かる個体と、掛からない個体が存在している状態ということ。
問い合わせからしばらく時間が経過した頃に、
メーカーから「RESET端子については、外部のPull up抵抗が必須である」との回答があり、
代理店からも、「仕様書のブロック図や記述が明確で無いと思われ、メーカー回答を正としてください。」と正式回答を頂いた。
なので、ATtinyマイコンで開発される際は、RESET端子の外部抵抗が必要となりますので、お忘れなく実装くださいませ。
[番外編]RESET端子とUPDIが兼用なので懸念となった
RESET端子は、外部pull up抵抗を付けて済ませることができたものの、そうしなかった背景として、デバッグと書き込み時にUPDIを使用していることが関連しています。
RESETとUPDIの兼用ピンになる為、マイコン内部のハード的な条件が関わっています。
UPDI通信では、バージンのマイコンに対してはあまり気にしなくとも良いのですが、2回目以降のUPDI接続時に、デバッカ(接続ツール)から+12Vの単発パルスが印可されます。
単純に外部pull upを設けてしまうと、UPDI接続時に抵抗を介してマイコンシステム電源へ+12Vが印可されてしまうので、瞬時とは言えども、電源にぶら下がっているデバイスを破壊しかねません。
つまり、UPDI機能とRESET機能の切り替え可能なハード構成を視野に入れておく必要があります。
製品開発上、小型機器の場合はコスト・サイズ面でデメリットとなり、しっかりと、仕様や発生原因を追究した上で、対策を講じる必要があったというわけです。