거북이처럼 천천히

Timer / Counter - 기초 (1) 본문

Embedded Programming/Atmega 128A (실습)

Timer / Counter - 기초 (1)

유로 청년 2024. 6. 1. 15:53

서론

 

 Timer/Counter는 디지털 논리 회로에서 주기를 갖는 신호를 측정 및 생성할 때 필요한 기능 및 회로이다.

Timer/Counter를 통해 특정 주파수를 갖는 출력 신호를 생성하여 특정 주기마다 이벤트를 발생하도록 설계하거나 외부에서 들어오는 신호의 길이를 측정할 수 있다.

 

따라서 Timer / Counter는 MCU에서 주변 기기들을 정확한 타이밍에 동작시키는 데 있어 중요한 개념이라고 할 수 있다. 이번 게시글을 통해 Timer / Counter에 대한 기본 개념을 알아보자.

 

 

 

본론

 

 Timer와 Counter는 하나의 세트로 묶어 사용하기 때문에 Timer와 Counter에 대해서 개념 차이를 잘 모르는 경우가 있다. Timer와 Counter의 차이는 다음과 같다

 

Timer

Timer : MCU의 내부 클럭을 세는 장치
내부 클럭을 세어 일정 시간 동안 펄스파형을 만들어내거나 일정시간 뒤에 인터럽트를 발생
분주 가능 : 범위 내에서 클럭 선택 가능
                   (ATmega 128는 분주 값으로 8, 32, 64, 128, 256, 1024을 제공한다.)

 

 

Counter 

Counter : MCU의 외부에서 입력되는 클럭을 세는 장치
외부핀을 통해 인가되는 펄스를 카운트하며 동작
분주 불가능 : 외부 클럭을 그대로 사용

 

 

 

이렇게 Timer / Counter를 생성된 출력 신호는 특정 주파수와 Duty ratio 등의 특성을 갖게 된다.
AVR로 부터 출력되는 신호를 이해하기 위해서 몇 가지 용어를 이해할 필요가 있다.

 

 

PWM (Pulse Width Modulation)

PWM : Pluse Width Modulation의 약자로 펄스 폭 변조라고 한다.
펄스파 (Pulse Wave)Duty ratio을 제어함으로서 평균 출력 전압을 제어할 수 있고, 아날로그 신호의
진폭을 조절하는 효과
를 얻을 수 있다. 
주로 DC 모터 또는 LED의 밝기 제어에 사용한다.

 

 

 

ATmega 128A는 각 핀에 High 값으로 5V 전압을 출력하게 되는데, Duty ratio를 50% 설정한다면 한 주기가 2초라고 가정했을 때, 1초 동안 High 상태이기 때문에 5V 전압이 출력되지만, 1초가 지난 이후에는 1초 동안 Low 상태이기 때문에 0V 전압이 출력된다.

 

 이를 평균 내어 2초 동안 출력된 출력 평균 전압을 계산하면 2.5V를 출력 전압으로 발생시킨 것과 같다.

 

 

 

Duty Ratio

Duty Ratio : PWM 파형이 한 주기에서 High-level이 차지하는 비율
즉,
PWM 신호의 한 주기에서 ON이 된 신호가 전체 한 주기에서 몇 %를 차지하는지를 나타낸다.

Duty ratio = (High-level 이였던 시간) / (PWM 파형 한 주기) * 100%

 

 

 

Max, Bottom, Top

Max : Counter가 상한선 값으로 설정할 수 있는 최대값
Bottom : Counter가 하한선 값으로 설정할 수 있는 최솟값
Top : Counter가 count할 수 있는 최댓값을 의미한다. 
8bit timer / counter는 0 ~ 255까지 카운트하기 때문에 256번 카운트하지만, Top값을 249로 설정하면
8bit timer / counter는 0 ~ 249까지 카운트하여 총 250번만 카운트할 수 있다.
Top 값은 사용자가 지정할 수 있다.

 

 

 

결론

 ATmega 128는 8bit timer / counter, 16bit timer / counter를 각각 2개씩 가지고 있으며, timer와 counter를 통해 사용자가 원하는 형태의 펄스파를 발생 시킬 수 있다. 따라서 원하는 형태의 펄스파를 만들어 내기 위해서 PWM와 Duty ratio, Counter의 Top (OCR, Ouput Compare Register) 등을 이해 한 뒤, 레지스터 (TCCR, Timer/Counter control registers) 에 적절한 값을 대입해야 한다.