Professional Documents
Culture Documents
프로그래밍 실전
제작 : 네 로 테 크
강의 : 김 종 형
Embedded AVR Programming
ATMEGA128 타이머/카운터0
1. 타이머/카운터의 개요
2. 타이머/카운터 0
3. 타이머/카운터 0 실습
2006-
2006-04-
04-03 -2-
Embedded AVR Programming
1-1 타이머/카운터의 개요
2006-
2006-04-
04-03 -3-
Embedded AVR Programming
1-2 타이머/카운터 0
2006-
2006-04-
04-03 -4-
Embedded AVR Programming
1-2 타이머/카운터 0
⊙ 타이머/카운터0 제어 레지스터(TCCR0)
: 타이머/카운터0의 동작 모드를 설정하고 프리스케일러의 분주비를 설정
BIT 7 6 5 4 3 2 1 0
$33($53) FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00
Value 0 0 0 0 0 0 0 0
2006-
2006-04-
04-03 -5-
Embedded AVR Programming
1-2 타이머/카운터 0
⊙ 타이머/카운터0 제어 레지스터(TCCR0)
- WGM00 ~ WGM01 : Waveform Generation Mode로써 카운터의 동작순서를 설정하여
어떤 파형을 발생하는지를 결정
1) Normal Mode : 타이머 카운터가 255까지 세고 난 뒤 인터럽트를 발생
2) CTC(Clear Timer on Compare match) Mode : 최대로 세는 수를 변화시킴
즉, 255까지 다 세지 않고 100까지만 세고 인터럽트를 발생시키게 한다든가 하는 것
3) Fast PWM Mode : 255까지 다 세기 전에 인터럽트를 발생시키게 할 수 있음
즉, 255다 세기 전에 한번 255다 센 후에 한번..이렇게 인터럽트가 두 번 발생 가능
4) PCPWM(Phase Correct Pulse Width Modulation) Mode : PWM 과 유사하나
255~0으로 숫자가 줄어들면서 셈
WGM01 WGM00 OCR0 레지스터 TOV0 플래그의
모드 동작모드 TOP
(옛 CTC0) (옛 PWM0) 의 업데이트 시점 셋트 시점
0 0 0 Normal 0xFF 설정 즉시 MAX
1 0 1 Phase Correct PWM 0xFF TOP BOTTOM
2 1 0 CTC OCR0 설정 즉시 MAX
3 1 1 Past PWM 0xFF TOP MAX
2006-
2006-04-
04-03 -6-
Embedded AVR Programming
1-2 타이머/카운터 0
⊙ 타이머/카운터0 제어 레지스터(TCCR0)
- COM01 ~ 00 : Compare Match Output Mode로서 OC0 단자에 출력 비교 매치
2006-
2006-04-
04-03 -7-
Embedded AVR Programming
1-2 타이머/카운터 0
2006-
2006-04-
04-03 -8-
Embedded AVR Programming
1-2 타이머/카운터 0
2006-
2006-04-
04-03 -9-
Embedded AVR Programming
1-2 타이머/카운터 0
BIT 7 6 5 4 3 2 1 0
$36($56) OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0
Value 0 0 0 0 0 0 0 0
⊙ 인터럽트 주기 공식
Interrupt Cycle = (Prescale Ratio/Clock) * (256-TCLK0)
인터럽트 주기 = (프리스케일러비/클럭)*(256-TCLK0레지스터값)
2006-
2006-04-
04-03 -10-
10-
Embedded AVR Programming
void main(void)
{
DDRB = 0x10; // 포트 B를 출력으로 설정
#asm("sei");
while (1)
{ };
}
2006-
2006-04-
04-03 -11-
11-
Embedded AVR Programming
2006-
2006-04-
04-03 -12-
12-