• Feed
  • Explore
  • Ranking
/
/
    ATmega128A

    ATmega128A의 6 Sleep Modes

    Datasheet의 Sleep Modes 파트
    박
    박형진
    2025.03.19
    ·
    6 min read

    Sleep Modes

    • Application을 사용하지 않을 때는 그냥 꺼 버리면 되는 거 아닌가!?

      • Master 모듈이 따로 있거나, 스위치를 내렸다 올리는 그런 걸... End-user보고... 하라고?

    • Sleep Mode는 Application을 Enable 상태로 유지하면서 MCU의 사용하지 않는 모듈들을 꺼 버릴 수 있다.

      • 전력을 아끼기 위해!

    • 장치에 여러 Clock Source가 공존하므로, 필요에 따라 다른 Sleep Mode를 선택해야 한다.

    4145
    • 6 모드가 있는데, 위 표에 표시된 X는 해당 기능이 Enable 상태라는 얘기다.

      • 본인은 처음에 헷갈렸다...ㅎㅎ Disable인 줄 알고...

    • Active Clock Domain

      • '해당 Clock Source는 해당 모드에서 살아 있다.'

    • Oscillators

      • 본 모듈을 작동시키는 Oscillator가 살아 있을 것인지?

      • Timer용 Oscillator가 살아 있을 것인지?

    • Wake-up Sources

      • Wake-up, 즉 Power Save 모드에서 빠져 나오는 조건을 의미한다.

      • 해당하는 곳에 인터럽트를 주어서 Wake-up 시킬 수 있다.

    • Start-up time으로 4 Clock Cycle만큼의 시간을 먹는다.

    • Sleep Mode 중에 Reset이 발생하면, MCU는 Wake-up해서 Reset Vector를 돌린다.

    Sleep Mode 진입 방법 - MCUCR, MCU Control Register

    • 이 레지스터를 설정함으로써 MCU의 어떤 기능을 켜고, 끄고 등. 제어할 수 있다.

      • 'MCU 제어 레지스터' 정도로 번역하는 것 같다.

    • Sleep Mode 설명을 보면 000, 001, 010... 이런 비트를 SM2:0에 Set 하라고 되어 있다.

      • 아... 이래서 C 배울 때 비트 연산을 임베디드에서 쓴다고 그랬던 거구나...

      • 한 바이트의 일부를 마스킹해야 해서...??

    SE? SM?

    • SE : Sleep mode Enable

    • SM : Sleep Mode


    Idle - SM2:0 = 000

    • 확실히 죽는 것

      • CPU

      • 일부 클럭

        • CPU Clock

        • FLASH Clock

    • 확실히 해당 모드에서 살아남는 것

      • SPI

      • UART

      • Analog Comparator

      • ADC

      • Two-wire Serial Interface

      • Timer/Counters

      • Watchdog

      • Interrupt System

    설명

    • Analog Comparator Interrupt로 깨울 예정이 없는 경우...

      • ACSR(Analog Comparator control and Status Register)의 ACD 비트를 설정해 Analog Comparator를 꺼 둘 수 있다.

      • 전원 아끼려고!

    • 그닥 많은 장치를 죽이는 것 같지 않지만, 가장 전기 많이 먹는 놈은 CPU니까... 확실히 유효할 것.

    ADC Noise Reduction - SM2:0 = 001

    설명

    • 확실히 죽는 것

      • CPU

      • 일부 클럭

        • I/O Clock

        • CPU Clock

          FLASH Clock

    • 확실히 해당 모드에서 살아 남는 것

      • ADC

      • External Interrupts

      • Two-wire Serial Interface address watch

      • T/C0

      • Watchdog

    • 위 장치들을 죽이고 살림으로써 ADC에 들어갈 수 있는 Noise를 줄이는 것이 목적이다.

      • 고해상도 Measurements 위해!

    Wake-up하는 경우들

    • External Reset

    • Watchdog Reset

    • Brown-out Reset

    • 아래 Interrupts

      • ADC Conversion Complete Interrupt

      • Two-wire Serial Interface Address match Interrupt

      • TC0 Interrupt

      • SPM/EEPROM Ready Interrupt

      • External Level Interrupt

        • INT7:4 혹은 INT3:0

          • INT: 외부 인터럽트 핀

    Power-Down - SM2:0 = 010

    설명

    • 살아 있을 거라고 써진 것 말고는 다 죽임.

      • External Interrupt

      • Two-wire Serial Interface Address Watch

      • Watchdog

        • 이게 Enable 상태라면 말이지...

    • 기본적으로 모든 클럭을 죽이고, Asynchronous 모듈만 살려 둔다.

      • 많은 것들을 죽여 둔 만큼 Wake-up에 시간이 좀 더 걸린다.

        • CLK 재시작, 안정화...

    Wake-up하는 경우들

    • External Reset

    • Watchdog Reset

    • 아래 Interrupts

      • TWI Address Match Interrupt

      • External Level Interrupt

        • INT7:4 or INT3:0

    Power-Save - SM2:0 = 011

    설명

    • Power-Down이랑 비슷한데, 하나가 다르다.

      • 만약 TC0이 Asyncronous 상태면, TC0은 Sleep 중에도 돌아간다.

        • = ASY Clock은 살려 준다.

      • 그래서 TC0에서 Timer Overflow나 Output Compare Event가 발생하면...

        • 그리고 TC0 Interrupt, Global Interrupt가 Enable이면 Wake up!

    • 비동기 타이머를 비동기 Clocked 할 거 아니면, Power-down 쓰는 것을 권장.

      • Wake-up시 비동기 타이머 레지스터의 내용물이 Undefined로 간주되기 때문.

        • AS0 = 0인 경우에 대해.

    Standby - SM2:0 = 110 & Crystal/Resonator Clock Opt Selected

    설명

    • 요건 Power Down 모드랑 비슷한데, Oscillator 계속 돌려두는 거.

      • 그래서 다시 깨우는 데 6 Clock이면 됨.

    Extended Standby - SM2:0 = 111 & Crystal/Resonator Clock Opt Selected

    설명

    • 요건 Power Save 모드랑 비슷한데, Oscillator 계속 돌려두는 거.

      • 요것도 다시 깨우는 데 6 Clock.


    정리

    • Oscillators를 죽이지 않는 모드인 경우

      • 깨우는 데 4-6 Clock 보장됨.

    • 반대로 죽이는 경우,

      • Clock이 재시작, 안정화된 후 다시 동작을 시작함.

    당연하지!


    Minimizing Power Consumption

    • Sleep mode를 최대한 활용하라.

    • 사용하는 기능을 최소화하고, 꼭 들어맞는 Sleep Mode를 써라.

      • 당연한 얘기들이 써 있는 Section.







    - 컬렉션 아티클