내가 만든 Arduino 보드에서 가능한 한 많이 전력을 줄이려고합니다. 사용하지 않는 입력 핀은 어떻게 구성해야합니까? 이에 대한 몇 가지 답변 ( here , here )이 이미 있지만 ATMega328P에 특정한 것입니다.
- 핀을 입력으로 설정하고 드라이브 핀을 높게 끌어 내부 풀업에 연결
- 핀을 입력으로 설정하고 드라이브 핀을 낮게 설정
- 핀을 입력, 외부 풀업으로 설정
- 핀을 입력으로 설정, 외부 풀다운
- 핀을 낮은 출력으로 설정
- 핀을 높은 출력으로 설정
- 핀을 낮은 외부 풀다운 출력으로 설정
답변
데이터 시트를 파고 들자 이것을 찾았습니다.
14.2.6 연결되지 않은 핀
일부 핀을 사용하지 않는 경우 이러한 핀의 레벨이 정의되어 있는지 확인하는 것이 좋습니다. 위에서 설명한대로 대부분의 디지털 입력이 딥 슬립 모드에서 비활성화되어 있지만 디지털 입력이 활성화 된 다른 모든 모드 (재설정, 활성 모드 및 유휴 모드)에서 전류 소비를 줄이려면 플로팅 입력을 피해야합니다.
사용되지 않는 핀의 정의 된 레벨을 보장하는 가장 간단한 방법은 내부 풀업을 활성화하는 것입니다. 이 경우 재설정 중에 풀업이 비활성화됩니다. 재설정 중 낮은 전력 소비가 중요한 경우 외부 풀업 또는 풀다운을 사용하는 것이 좋습니다. 사용하지 않는 핀을 VCC 또는 GND에 직접 연결하는 것은 권장하지 않습니다. 실수로 핀이 출력으로 구성된 경우 과도한 전류가 발생할 수 있습니다.
의견 / 질문과 관련하여 업데이트 :
표 14-1에 따르면 풀업 저항은 다음 조건이 충족 될 때만 활성화됩니다.
- 핀이 입력으로 설정되었습니다 (DDxn 비트가 로직 로우 임)
- PORTxn은 로직을 높게 설정
- PUD는 로직 로우입니다
풀업 저항을 통해 상당한 전류가 흐르게하는 유일한 방법은 풀업이 활성화 된 상태에서 핀의 레벨이 낮은 경우입니다. 이것은 Atmel이 심하게 엉망이되거나 (풀지 않게) 풀업이 활성화 된 상태에서 핀이 입력으로 구성되었고 핀이 어떻게 든 접지에 연결되어 있음을 의미합니다.
이 섹션 14.2.5
에서는 디지털 입력 활성화 및 절전 모드에 대해 설명합니다. 요약하자면, 핀이 외부 인터럽트로 구성되지 않은 경우 디지털 입력은 슈미트 트리거의 입력에서 접지에 고정되어 슬립 모드에있는 동안 플로팅 레벨을 방지합니다. 휴면 모드에서 디지털 출력이 비활성화되어 있는지 알 수 없습니다. figure에 따라 비활성화 된 것처럼 보이지 14-2
는 않지만 너무 놀랐지는 않습니다. 가장 좋은 방법은 내부 또는 외부 풀업 저항을 사용하는 것입니다.
답변
- 내부 풀업을 연결하려면 핀을 입력으로 설정하고 드라이브 핀을 높게 설정하십시오 . ” 내부 풀업을 연결하여 입력을 높이십시오 “라고 읽어야 합니다. VCC 또는 접지에 대한 FET를 통해 능동적으로 그렇게하는 경우에만 “드라이브”라는 단어를 사용합니다. 정의 된 수준을 원한다는 것이 분명하고 풀업이이를 처리합니다. 풀업을 활성화하면 재설정 후 가장 먼저 수행해야합니다. 그것은 일반적으로 I / O 초기화에 적용됩니다. 유일한 전류는 푸시 풀 쌍의 NFET의 누설 전류와 입력 FET의 게이트 누설입니다. 1µA 미만 : 정상입니다.
- 핀을 입력으로 설정하고 드라이브 핀을 낮게 설정하십시오 . 좋은 생각이 아닙니다. 소프트웨어가 바나나를 사용하여 핀을 높은 출력으로 전환하면 핀이 단락되어 보완 쌍의 PFET가 손상됩니다.
- 핀을 입력으로 설정, 외부 풀업 : 1)과 동일하며 더 비쌉니다. 그러나 풀업이 항상 존재한다는 이점이 있습니다. 내부 풀업을 활성화하지 않아도됩니다 (기본적으로 비활성화되어 있음). I / O가 실수로 출력을 낮게 전환하면 작은 전류 드레인이 발생합니다.
- 핀을 입력, 외부 풀다운으로 설정 : 다시 저항의 비용 (예, 저렴하다는 것을 알고 있습니다 + 저렴 + 불필요 = 비쌉니다.) 핀이 높은 값으로 활성화되면 3과 동일한 전류.
- 핀을 출력으로 낮게 설정 : 입력으로 구성 할 때보 다 누설 전류가 높지만 여전히 1µA 미만이므로 걱정할 필요가 없습니다. 여전히 내부 풀업을 활성화합니다. 출력으로 I / O와 함께 활성화되지는 않지만 실수로 입력으로 전환되면 핀은 플로팅 상태로 유지되지 않습니다.
- 핀을 고출력으로 설정 : 5와 동일)
- 핀을 출력 낮게, 외부 풀다운으로 설정 : 풀다운 저항은 불필요한 비용입니다. 출력을 낮게 만들면 이미 낮습니다. 그러나 5)에 비해 의도하지 않은 입력으로 전환하면 핀이 플로팅되지 않을 것이라는 이점이 있습니다.
나는 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/ 에서 가져온 것입니다 .