回答:
データシートを掘り下げた後、私はこれを見つけました:
14.2.6未接続ピン
一部のピンが使用されていない場合、これらのピンのレベルが定義されていることを確認することをお勧めします。上記のように、ディープスリープモードではほとんどのデジタル入力が無効になっていますが、デジタル入力が有効になっている他のすべてのモード(リセット、アクティブモード、アイドルモード)での消費電流を減らすため、フローティング入力は避ける必要があります。
未使用ピンの定義済みレベルを確保する最も簡単な方法は、内部プルアップを有効にすることです。この場合、リセット中にプルアップは無効になります。リセット中の低消費電力が重要な場合は、外部プルアップまたはプルダウンを使用することをお勧めします。未使用のピンをVCCまたはGNDに直接接続することは推奨されません。これは、ピンが誤って出力として設定された場合に過電流が発生する可能性があるためです。
コメント/質問に関連して更新:
表14-1によると、プルアップ抵抗は次の条件が満たされた場合にのみアクティブになります。
プルアップ抵抗に大きな電流が流れる唯一の方法は、プルアップを有効にしてピンが低レベルになる場合です。これは、Atmelがひどく(めったに)混乱するか、ピンが入力として設定され、プルアップが有効になっていて、ピンが何らかの方法でグランドに接続されていることを意味します。
セクションで14.2.5
は、デジタル入力の有効化モードとスリープモードについて説明します。要約すると、デジタル入力はシュミットトリガーの入力でグランドにクランプされ、ピンが外部割り込みとして設定されていない限り、スリープモード中のフローティングレベルを防ぎます。スリープモードでデジタル出力が無効になっているかどうかわかりません。図14-2
によると、無効になっているようには見えませんが、そうであったとしてもあまり驚かないでしょう。最善の策は、内部または外部プルアップ抵抗を使用することです。
私は1)に行きます:内部プルアップ付きの入力。外付け部品は不要です。FMEAでは5)うまくいくかもしれませんが、それは内部プルアップを有効にするのを忘れたリスクをどれだけ高く見積もるかに依存します。ソフトウェア設計のピアレビューで保険をかけるべきです。
ピンは通常、それ自体で大きな違いを生じません。各ピンにも特定の機能があります-ピンの機能を無効にします
volatile uint8_t timer2sum; // see interrupt handler
void Initialize()
{
// configure pin for output
DDR_LED |= LED;
// set Power Reduction Register
PRR = (1<<PRTWI) // turn off TWI
| (1<<PRTIM0) // turn off Timer/Counter0
| (1<<PRTIM1) // turn off Timer/Counter1 (leave Timer/Counter2 on)
| (1<<PRSPI) // turn off SPI
| (1<<PRUSART0) // turn off USART (will turn on again when reset)
| (1<<PRADC); // turn off ADC
// select POWER SAVE mode for sleeping, which allows Timer/Counter2 to wake us up
set_sleep_mode(SLEEP_MODE_PWR_SAVE);
// configure Timer/Counter2 to wake us up as infrequently as possible
TCCR2B |= (1<<CS22) | (1<<CS21) | (1<<CS20); // clock at 14400 Hz
TIMSK2 |= (1<<TOIE2); // interrupt on overflow, 56.25 Hz
timer2sum = 0; // see interrupt handler
sei(); // enable interrupts
}
同じチップを使用しているhttp://www.nerdkits.com/library/lowpowerexample/から取得。