- ベストアンサー
ATxmegaのパワーダウンモードで消費電流を1mAまで下げる方法
- ATMEL(現在はmicrochip)のマイコンATxmega64A3Uでは、パワーダウンモードに移行すると消費電流を1uA程度まで下げることができるが、実際に計測すると約1mA程度の消費電流が発生してしまう。
- パワーダウンモードに設定すると、各ポート端子は入力インピーダンス状態にはならない可能性がある。
- ポートEやポートFに接続されているディップスイッチの状態によって消費電流が影響を受けている可能性がある。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そうですね。パワーダウンモードにしても出力ポートの方向は変わりませんよ。もしそうしたければパワーダウンモードに入る前にプログラムでDIRを入力にすればよいだけですからそういう仕様になっているかと。 普通にH/Lを出力している出力ピンもソース/シンク電流を流そうと思えば流せるはずです もし勝手に入力モードになってしまうとCPUの周囲の回路に影響がでてしまいますからね。
その他の回答 (2)
- kaba__san
- ベストアンサー率45% (27/59)
https://avr.jp/user/DS/PDF/xmegaA.pdf これの8.5に指南が書いてます。
お礼
回答頂きありがとうございます。 パワーダウンモードに移行してもポートが入インピーダンスにならないことを確認しました。確かに考えてみればそうですね。 今回のディップスイッチが接続されているポートE,Fのプルアップ抵抗はパワーダウンモードに移行するプログラムの前で、 (例) PORTF.PIN0CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN1CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN2CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN3CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN4CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN5CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN6CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN7CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN0CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN1CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN2CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN3CTRL = (PORT_OPC_TOTEM_gc); // high-impedance このようなプログラムで、ディップスイッチがONでGNDに接続されたとしてもハイインピーダンスで電流消費は軽減されたことを確認できました。 今までは約1.5mAだったものが約1mA程度まで電流消費が少なくなりました。 基板作成者によると、マイコン以外に0.6mA程度常時食っているICもあるとのこと。 もしかしたらあと0.4mA程度減らせる可能性があるようです。 まだ、adcとかの停止をちゃんと確認していないのでトライしてみたいと思います。
- kaba__san
- ベストアンサー率45% (27/59)
CPUだけはその消費電力になるでしょう。 入力ポートについては、こんな質問を書く時間でデータシートを読めばわかるはずです。 勝手にハイインピーダンスなんてされたら、ピン変化割り込みでウェークアップ出来なくなるじゃないですか。 スリープ時に電力を消費したくないなら、自分でそのようにプログラムするんです。 ウォッチドッグやBODを動かしてたらそれ用のオッシレータも動きますし、その他の周辺機能も意図的に停止しなければウェークアップ用に動作し続けて電力を消費するでしょう。 周辺機能部の消費電流も書いているはずです。
お礼
回答頂きありがとうございます。 パワーダウンモードに移行してもポートが入インピーダンスにならないことを確認しました。確かに考えてみればそうですね。 今回のディップスイッチが接続されているポートE,Fのプルアップ抵抗はパワーダウンモードに移行するプログラムの前で、 (例) PORTF.PIN0CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN1CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN2CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN3CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN4CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN5CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN6CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN7CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN0CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN1CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN2CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN3CTRL = (PORT_OPC_TOTEM_gc); // high-impedance このようなプログラムで、ディップスイッチがONでGNDに接続されたとしてもハイインピーダンスで電流消費は軽減されたことを確認できました。 今までは約1.5mAだったものが約1mA程度まで電流消費が少なくなりました。 基板作成者によると、マイコン以外に0.6mA程度常時食っているICもあるとのこと。 もしかしたらあと0.4mA程度減らせる可能性があるようです。
お礼
回答頂きありがとうございます。 パワーダウンモードに移行してもポートが入インピーダンスにならないことを確認しました。確かに考えてみればそうですね。 今回のディップスイッチが接続されているポートE,Fのプルアップ抵抗はパワーダウンモードに移行するプログラムの前で、 (例) PORTF.PIN0CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN1CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN2CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN3CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN4CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN5CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN6CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTF.PIN7CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN0CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN1CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN2CTRL = (PORT_OPC_TOTEM_gc); // high-impedance PORTE.PIN3CTRL = (PORT_OPC_TOTEM_gc); // high-impedance このようなプログラムで、ディップスイッチがONでGNDに接続されたとしてもハイインピーダンスで電流消費は軽減されたことを確認できました。