개발 관련 학습정리/AVR(atmega128) Register 분석

[Atmega128] 3. 타이머 인터럽트 Timer/Counter Register

호반반 2019. 8. 3. 16:09
반응형

이번에 사용할 것은 PWM 파형을 만들 때 꼭 필요한 타이머 인터럽트이다.

atmega128에는 총 4개의 타이머가 있으며,

그중에 timer0과 timer2는 8비트 타이머로 이루어져 있고,

timer1과 timer3은 16비트 타이머로 이루어져 있다.

 

 

 

8bit timer/counter block diagram

 

 

 

 

타이머 인터럽트를 만드는 이유는 원하는 파형을 만들기 위해서 인데,

원하는 파형을 만들기 위해서는 분주, 타이머의 동작 모드 등을 적절하게 바꾸어야 한다.

바꾸기 위해서는 간단하게 분주, 타이머의 동작모드 등에 관련된 레지스터 값을 바꿔주기만 하면 된다.

기능으로는 인터럽트 발생과 가변할 수 있는 출력 신호를 생성하여 OC단자로 출력할 수 있는 기능이 있다.

그리고 타이머1과3 한정으로 트리거 신호로 카운터 값을 캡처하는 기능을 가지고 있다.

이번 편에서는 레지스터의 구조와 값을 바꾸는 것만 알아보고,

다음 편에서 적절하게 바꾸는 방법을 알아보도록 하자.

 

 

 

 

 

※ 레지스터는 8비트의 타이머 0을 기준으로 설명합니다.

 

1. TCCR0 (timer interrupt control register 0)

 

FOCn (Force Output Register n) : PWM 모드가 아닌 경우에만 유효하며,

OC0단자에 출력비교가 일치할 때 출력하게 되는 값과 동일한 출력을 보낸다. (보통 0으로 설정한다.)

 

WGMn (Waveform Generation Mode n) : 타이머 동작 모드를 결정하는 레지스터이다.

 

COMn (Compare Match output mode n) : OC핀의 동작을 조절한다.

 

CSn (Clock Select) : 클락의 분주를 설정한다.

 

 

 

 

 

 

 

 

2. TIMSK (Timer Interrupt Mask Register)

회색부분은 쓰지 않는다.

 

OCIEn (Output Compare match Interrupt Enable) : 타이머의 출력 비교 인터럽트를 활성화시키는 레지스터

 

TOIEn (Timer Overflow Interrupt Enable) : 오버플로 인터럽트를 활성화 시키는 레지스터

 

 

 

 

 

 

 

3. TCNT0 (Timer Register 0)

 

2^8(0~255)만큼 TCNT값을 카운트한다.

 

 

 

 

 

 

 

 

 

4. ORC0 (Output Compare Register 0)

OCRn의 값과 TCNTn의 값이 같을때 OCRn의 값을 초기화시키고 출력 비교 인터럽트를 일으킨다.

 

 

 

 

 

 

 

 

 

 

5. TIFR (Timer Interrupt Flag Register)

회색 부분은 쓰지않음

 

OCF0 (Output Compare match Flag 0) : 출력비교 인터럽트가 발생하면 1로 세트 되고 인터럽트가 서비스 시작하면 0으로 돌아온다.

 

TOV0 (Timer Overflow Flag 0) : 타이머에서 오버플로가 발생하면 1로 세트되고 인터럽트가 서비스 시작하면 0으로 돌아온다.

 

 

 

 

 

 

 

 

 

이번엔 간단하게 타이머 레지스터의 종류와 레지스터 비트들이 하는 역할들을 알아보았고,

다음편에서는 분주 설정과 타이머 모드, OC출력 등을 알아볼 예정이다.

 

 

 

 

 

 

 

 

 

[복두출판사]AVR ATmega128 프로그래밍 응용실습:ED-4513 마이크로프로세서 콤보 IT를 이용한, 복두출판사
반응형