Answers:
浏览数据表后,我发现了这一点:
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/,他们也使用相同的芯片。