ATtiny13 Timer 제어 - 1초 만들기
AVR ATtiny13은 내부에 9.6Mhz(또는 4.8Mhz)의 RC오실레이터가 있고 퓨즈비트에서 설정 가능하다.
CKSEL
10 9.6 MHz
01 4.8 MHz
퓨즈 비트를 읽어 보면 디폴트로 9.6Mhz/8DIV로 설정되어 있다. CKDIV8 체크를 지우면 9.6Mhz로 동작한다.
MCU Timer 계산기로 1ms를 위해 필요한 값을 구할수 있다.
9.6Mhz에서 64분주 하여 Timer0에 0x69를 리로드 하면 1ms주기로 인터럽트 생성 가능하다.
소스코드
void InitTimer0(void)
{
TIMSK0 |= (1<<TOIE0);
TCCR0B = TIMER_CLK_DIV64;
}
#include "timer.h"
volatile unsigned int gTimeTick1 = 0;
void Timer0Handler(void)
{
gTimeTick1++;
SetTimer0(0x69);
}
//-----------------------------------------------------------------------------
int main(void)
{
unsigned char status = 0;
//시스템 초기화
SystemInit();
InitTimer0();
enable();
while(1)
{
if(gTimeTick1>1000)
{
gTimeTick1 = 0;
//Toggle();
}
}
}
Power Module에 적용
반응형