인성 좋은 인성이

AVR-타이머 본문

IT공부/AVR

AVR-타이머

전인성 2019. 8. 4. 10:03

본 글은 ATmega128을 기준으로 작성되었으며, 8bit 기준으로 설명되었음을 알립니다.

 

ATmega128은 타이머가 4개(0~3)가 존재한다. 타이머는 인터럽트를 사용하고 PWM 파형을 만들고자 할 때 주로 사용된다. 이 중 타이머 0, 2는 8bit이고 1, 3은 16bit이다.

 

인터럽트는 카운트의 값이 오버플로우 되었을 때 발생하는 OVF, 카운트 값과 비교 레지스터 값이 일치할 때 발생하는 인터럽트 등이 존재한고, 입력 캡처 인터럽트도 존재한다.

 

사실 타이머를 사용하는 목적은 인터럽트 사용도 있지만, 내가 원하는 파형을 만들기 위해서(적어도 글쓴이는 그렇다) 많이 사용한다. 원하는 파형을 만들기 위해서는 ATmega128에서 제공하는 register를 적절하게 사용하면 된다. 그렇다면 ATmega128에는 어떤 register가 존재하는지 알아보자.

 

TCCR0 - Timer/Counter Control Register n

TCCRn

FOCn - Force Output Compare n : PWM 모드가 아닌 경우에만 유효하며 출력 비교가 OCn과 일치할 때 출력하게 되는 값과 동일한 출력을 한다. 보통 0으로 세트 한다.

WGM - Waveform Generation Mode : 타이머의 동작 모드를 설정하는 부분이다.

WGM

COM - Compare Match Output Mode : OC핀의 동작을 설정하는 부분이다.

PWM이 아닌경우다.
Fast PWM인 경우

 

Phase Correct PWM인 경우

 

CS - Clock Select : 분주비를 설정하는 곳이다.

분주비 설정

TIMSK - Timer Interrupt Mask 

 

bit 1 - Timer/Counter Output Compare Match Inaterrupt Enable

bit 2 - Timer/Counter Overflow Interrupt Enable

 

TIFR -Timer/Counter Interrupt Flag Register

 

bit 1 - Output Compare Flag : COMP가 걸리면 1로 세트 되고 인터럽트를 요청한다. 인터럽트가 실행되면 클리어 된다.

bit 0 - Timer/Counter Overflow Flag : OVF가 걸리면 1로 세트 되고 인터럽트를 요청하며 실행되면 클리어 된다. 

 

TCNT - 카운터이다. 2^bit만큼 카운트를 한다.

OCR - COMP 할 때 비교하는 친구이다. 카운터와 비교하여 같을 때 인터럽트를 발생시킨다.

'IT공부 > AVR' 카테고리의 다른 글

AVR-와치독 타이머  (0) 2019.08.07
AVR-외부인터럽트  (0) 2019.08.03