본문 바로가기

AVR

타이머 / 카운터 0 일반모드(이론)


이번에는 타이머 / 카운터에 대해서 공부 해 보았다.
내용을 보니..;; 어마어마 한 내용을 담고 있고..
계산도 있어서;; 조금 걱정은 되었지만.. 이론보다는
실습 중심으로 공부 하자는 생각을 한 뒤 실습을 하면서 이론 내용을 보았다.
먼저 간단하게 이론을 본 것은 타이머/카운터는 0,1,2,3 이렇게 4개가 존재하는데
0,2는 8비트 타이머/카운터를 가지며 1,3은 16비트 타이머/카운터를 가진다고 하였다.
그리고  타이머/카운터는 내부 클럭이나 외부 클럭을 카운터 하는 카운터로 동작한다는 사실을
알게 되었다.

이번에도 역시 데이터 시트의 내용을 중심으로 이론을 써 보았다;;
하지만 이해가 되질 않는다;; ㅠㅠ

이 중에서 타이머/카운터 0을 먼저 공부하였다.
여기에도 역시 레지스터를 이해 하는 것이 중요했다.
먼저 타이머/카운터 제어 레지스터인 TCCR0를 보게 되면


이렇게 되어 있는데 여기에서 Bit 7인 FOC0은 PWM 모드가 아닌 경우에 유효하며 이 비트가 1이면 ATMEGA128의 14핀을 통해 Bit 4,5에 있는 내용을 출력 하는 역할을 함. 그리고 인터럽트가 생기지 않으며 OCR0 레지스터를 TOP으로 사용하는 사용하는 CTC모드에서 타이머를 클리어 시키지 않는다고 하였다. 라고 ATMEGA128 데이터 시트에 나와있는데;;
영 이해가 되질 않더군요;;
여기서 TOP은 카운트 과정에서 취할 수 있는 최대값 이라고 하였다.

그리고 Bit6, 3에 있는 WGM00, WGM01은 동작모드를 설정 하는데 데이터 시트에 있는 값에 대한 표를 보면


Bit 5,4의 COM01, COM00은 타이머/카운터0의 출력단자 OCO핀의 동작을 제어하고 위 동작모드에 따라서
여러 출력 기능을 가진다고 하였다.



마지막으로 Bit 2,1,0은 타이머/카운터0의 분주비를 선택하는 것이였다.


이렇게 타이머/카운터0을 제어하는 레지스터에 대해서 알아 보았는데..
이렇게 봐도 반은 이해가 되었지만 반은 이해가 되질 않았다.. ㅠㅠ
그래도 이해한 만큼만 이해하고 넘어가서 계속 반복을 하다가 보면 이해 가리라 생각을 하였다.

다음에는 타이머/카운터0 레지스터 TCNT0과 출력 비교 레지스터0 OCR0을 보면

이렇게 그냥 값을 받는 레지스터로 OCR은 계속 TCNT 레지스터와 값을 비교 하여 값이 일치 하였을때 값이 출력 되거나
인터럽트를 발생시킨다고 하였다.

다음으로 타이머/카운터 인터럽트 마스크 레지스터인 TIMSK를 보면

일단 지금 공부 하는 부분은 타이머/카운터0 이기 때문에 Bit1, 0만을 사용한다.

Bit 1이 설정 되면 TCNT와 OCR의 값이 일치 하였을 때 인터럽트를 발생시키고
Bit 0이 설정 되면 오버플로우가 발생하였을 때 인터럽트를 발생시킨다.

이렇게 간단히 공부를 해 보았다.

혼자서 데이터 시트와 책을 보면서 공부 하려니;; 점점 내용은 이해 안되고;; 에혀;;
그래도 열심히 해 봐야지~!! ㅋㅋ

'AVR' 카테고리의 다른 글

스텝모터 구동  (0) 2009.09.14
타이머 / 카운터 0 일반모드(실습)  (0) 2009.07.25
TEXT LCD 제어 실습(외부 인터럽트)  (0) 2009.07.21
TEXT LCD 제어 실습  (0) 2009.07.17
TEXT LCD 제어 이론  (0) 2009.07.17