이전 포스트에 이어서 T/C2에 관련된 레지스터들에 대해서 알아보자. T/C2와 관련된 레지스터들은 다음과 같다.


[표 1] T/C2와 관련된 레지스터들

레지스터

용도

TCNT2

클럭의 계수값을 실시간으로 저장하는 레지스터

OCR2

(Overflow Compare Register) 이  레지스터의 값이 오버플로가 발생하는  값으로 설정된다.

TCCR2

T/C2의 전체적인 동작을 설정하고 제어하는 레지스터

TIMSK

T/C2의 인터럽트를 사용할 수 있도록 설정

TIFR

T/C2의 인터럽트가 발생했는지를 표시하는 레지스터

ASSR

어떤 클럭 소스를 이용할 것인가를 설정


ASSR 레지스터

 ASSR2 레지스터를 이용하여 어떤 클럭 소스를 이용할 것인가를 설정할 수 있다.


[그림 1] ASSR 레지스터의 구조


이 ASSR레지스터의 b3는 AS2인데 이 비트가 ‘0’이면 시스템 클럭을, ‘1’이면 TOSC1, TOSC2핀으로 인가되는 외부 클럭을 T/C2의 클럭소스로 선택한다.

TCCR2 레지스터

 TCCR2 레지스트는 T/C2의 전체적인 동작을 설정하고 제어하는 레지스터이다.


[그림 2] TCCR 레지스터


FOC2는 b7인데 이 비트는 항상 ‘0’으로만 읽혀지며 PWM모드가 아닐 때만 ‘1’을 쓸 때 강제로 비교매치가 수행된다. (Force Output Compare) 이 경우 OC2핀의 출력은 COM21:0비트의 설정에 따라 변하게 된다.

그리고 b6과 b3 두 개의 비트는 WGM21:0로 표기하면 T/C2의 동작 모드를 설정하는데 사용되며  다음 표에 각각의 모드를 수록하였다.


[표 2] Waveform Generation Mode (WGM) 비트 설정

No

WGM21:0

모드

TOP

OCR2갱신

TOV2 세트

0

00

Normal

$FF

즉시

MAX

1

01

Phase Correct PWM

$FF

TOP

BOTTOM

2

10

CTC

OCR2

즉시

MAX

3

11

Fast PWM

$FF

BOTTOM

MAX


COM21:0 비트는 OC2핀의 출력을 제어하며 이 두 비트 중 하나라도 ‘1’로 세트되어 있다면 17번 핀은 포트핀(PB3)으로 동작하지 않고 OC2핀으로 동작하게 된다. 단 OC2핀으로 사용하기 위한서는 DDRB3는 반드시 출력(‘1’)으로 설정해야 된다는 것을 주의해야 한다. 또한 COM21:0 설정에 따른 동작은 어떤 모드로 동작하느냐에 따라서 값은 값이라도 다르다는 것에도 유의해야 한다.


 CS22:0 비트는 입력 클럭의 분주비를 설정하는 비트들이다.


[표 3] T/C2 프리스케일 선택

CS22

CS21

CS20

설명

clkT2S =16MHz일 때 TOI 발생 주파수

0

0

0

클럭 소스 없음

(T/C2 비동작)

발생 안 함

0

0

1

clkT2S

62,500 Hz

0

1

0

clkT2S /8

7,812 Hz

0

1

1

clkT2S /32

1,953 Hz

1

0

0

clkT2S /64

977 Hz

1

0

1

clkT2S /128

488 Hz

1

1

0

clkT2S /256

244 Hz

1

1

1

clkT2S /1024

61 Hz


TIMSK 레지스터

 T/C0에서도 소개한 바 있는 TIMSK 레지스터는 T/C2의 인터럽트를 사용할 수 있도록 설정하는 비트들을 가지고 있다. 여기서는 T/C2와 관련된 b6, b7 비트들을 확인하자.


[그림 3] TIMSK 레지스터


이 중 b6은 TOIE2 (Timer/counter Overflow Interrupt Enable 2)라고 명명되어 있다. TOIE2는 T/C2에서 오버플로우가 발생했을 때 인터럽트를 발생시킬 것인지 아닌지를 설정하는 비트인데 “0”으로 설정되면 인터럽트를 발생시키지 않는다. 만약 TOIE2가 “1”로 설정되어있고 글로벌 인터럽트가 인에이블이면 (즉 SREG의 I비트가 1로 되어 있으면) 인터럽트가 발생된다. b7은 비교매치 시에 인터럽트를 발생시킬 것인지 아닌지를 설정하는 비트이고 ‘1’로 설정되면 비교매치 인터럽트가 발생한다.



Posted by 살레시오
,