본문 바로가기

임베디드 (?)

ATMEL - Tiny13 Sleep and Wake up

Tiny13 으로 긴급히... 바때리로 돌아가는 쪼만한 유닛을 만들게 되었습니다.
on/off 버튼 토글하면, Sleep and Wakeup 이 되야 합니다.
-_-; 큰 삽질은 안했지만, 아래 같이 하면 되네요...

on/off button 은 B1 port 의 Port Change Interrupt 를 사용합니다.
아래 Sleep 관련 Macro 를 사용하려면, AVR GCC (WinAVR) 에서 제공하는...
#include <avr\sleep.h>
를 쓰면 됩니다.

Sleep 들어갔더니 20uA Current 소모 하네요... 좋아요~

/* ----------------------------------------------------- */
 sleep_enable();

 MCUCR = (MCUCR & 0xFC) | 0x00; // level intr make external intr
 GIMSK = 0x20; // enable Port Change intr
 PCMSK = 0x02; // Pin change mask to PB1 (on/off button )
 sei(); // global enable
 
 set_sleep_mode(SLEEP_MODE_PWR_DOWN);  // select sleep mode
 sleep_mode();  // Call the SLEEP instruction.
 
 cli();  // global intr disable
/* ----------------------------------------------------- */