예전에 해서 기억은 잘...안나지만 정리용 포스팅 이다.
ATmega128에 타이머는 8비트 2개(Timer0, 2), 16비트 타이머 2개(Timer 1, 3)
#include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 16000000 unsigned int timer0Cnt = 0; unsigned char timer1Cnt = 0; unsigned char timer0Sec = 0; unsigned char timer1Sec = 0; SIGNAL(SIG_OVERFLOW0); SIGNAL(SIG_OVERFLOW1); void Timer_Init(void) { TCCR0 = 0x05; TCNT0 = 0x83; TIMSK |=1<<TOIE0; TIFR |=1<<TOIE0; TCCR1B = (1<<CS12); TCNT1 = 59286; TIMSK |= 1<<TOIE1; } void Device_Init(void) { sei(); Timer_Init(); cli(); } int main(void) { Device_Init(); sei(); while(1); return 0; } SIGNAL(SIG_OVERFLOW0) { cli(); TCNT0 = 0x83; timer0Cnt++; if(timer0Cnt == 1000){ timer0Sec++; // 1초 변수 timer0Cnt = 0; } sei(); } SIGNAL(SIG_OVERFLOW1) { cli(); TCNT1=59286; timer1Cnt++; if(timer1Cnt == 10){ timer1Sec++; // 1초 변수 timer1Cnt = 0; } sei(); }
대충 이런식으로 쓴듯...
반응형
'프로그래밍 > ATmega128' 카테고리의 다른 글
ATmega128 GPS 이야기 - 마지막 (15.05.12) (1) | 2015.05.12 |
---|---|
AVR Studio 4, UART에서 printf() 사용 (0) | 2015.04.28 |