8051 타이머 정복 - 제1부 -
제1부 : 8051 타이머 개요
제2부 : 타이머 관련된 SFR 레지스터 분석제3부 : 타이머 동작모드 분석 및 예제 프로그램 작성제4부 : 타이머 활용 및 정리
0. 들어가며8051 마이크로컨트롤러를 학습하면서 어려움에 부딪히는 가장 중요한 기능 중의 하나가 바로 "타이머/카운터"의 활용입니다. 왜냐하면, 이 타이머 기능은 타이머 자체로서 그 역할을 하는 것에서 벗어나 인터럽트 및 시리얼 통신의 사용에 있어서도 이용이 되기 때문입니다. 다시말해, 8051의 다른 부분을 공부하다가도 다시 한번 되돌아와서 봐야 하는 부분이 바로 이 타이머/카운터(이하 타이머라고 하겠습니다). 해서, 본 강좌에서는 Ateml의 AT89S51 프로세서를 중심으로 8051 타이머에 대한 이해를 돕고, 이를 이용하여 간단한 응용 함수를 구현해보도록 하겠습니다.
1. 타이머/카운터 개요먼저 용어의 정의를 살펴보도록 하죠. 타이머와 카운터는
일정 주기의 클럭신호를 입력 받아 특정 레지스터의 값을 계수하는 기능을 말합니다. 여기서 일정 주기의 클럭신호를 통상
클럭소스라 부르며 이 클럭소스를 외부 특정 핀으로부터 입력받으면
카운터, CPU 내부에서 입력받으면
타이머라고 부릅니다. 여기서 CPU 내부에서 클럭신호를 받는다 함은 89S51의 클럭을 담당하는 오실레이터 혹은 크리스털 부품을 이용한 클럭신호를 말하는데 보통 이 크리스털 등은 CPU 외부에 별도의 부품으로 존재하나, CPU 내의 모든 기능이 이 신호를 기준으로 동작하므로 카운터와의 구별을 위해 내부 클럭신호라고 부르도록 하겠습니다. 카운터로 동작하는 경우에는 아래 그림의 빨간색과 파란색 표시가 된 핀이 신호의 입력을 담당하게 됩니다. 참고로
고전적인 8051계열의 칩은 이 타이머/카운터가 2개 존재하며, 8051의 개량형인 8052계열(AT89S52, AT89S8252 등)은 추가 타이머 1개를 포함하여 총 3개의 타이머를 제공합니다.
<그림 1 : AT89S51(좌) 및 AT89S52(우)의 타이머/카운터 핀 아웃>
위의 그림에서처럼, 카운터는 소스가 외부(T0,T1)에서 인가되는 것 외에는 기본적인 기능은 타이머와 다를 바가 없으므로 타이머에 대해서 확실히 알게 되면 카운터는 식은죽 먹기입니다.
자아!!! 이제 본론으로 들어가기 전에 몇 가지 질문을 받아보도록 할까요?
[Q]위에서 오실레이터와 크리스털이란 부품을 언급하셨는데 각각이 어떤 부품을 말하는지 궁금합니다.
[A]통상 CPU는 자신과 내부 모듈 그리고 주변장치와의 신호간 동기화를 위해 클럭이란 시그널을 사용합니다. 이 클럭 주파수가 높을 수록 처리속도가 높다고 보아도 무방하죠. 이 클럭신호는 CPU칩마다 이용하는 방식이 다른데, 크게 CPU 내부에서 자체적으로 만들어내는 것과, 외부의 부품을 달아서 클럭신호를 제공받는 경우 두 가지가 존재합니다. 8051칩은 이 중 후자의 경우에 해당하기 때문에 클릭신호 생성을 위해 별도의 외장부품을 달아야 합니다. 그 외장부품이 바로
오실레이터와
크리스털입니다. 아래 사진에 두 부품의 외형을 실었습니다. 두 부품의 차이점은 CPU에 클럭신호를 제공하는 것에는 차이가 없으나 배선 방식에 다소 차이가 나며, 가격은 오실레이터보다 크리스털이 좀 더 저렴하고, 8051과 같은 마이컴 계열의 보드에서는 부품배치가 용이한 ATS타입의 크리스털이 주로 이용되기도 합니다. 참고로 크리스털은 자체만으로는 진동을 할 수 없기 때문에 LC진동을 위해서 커패시터를 추가적으로 달아주게 되어 있습니다.
<그림 2 : 오실레이터(좌)와 크리스털(중), ATS 타입 크리스털(우)>
[Q] 제가 가진 보드의 크리스털은 클럭주파수가 22.1182MHz입니다. 같은 CPU라도 사용되는 클럭주파수가 보드마다 다른 경우가 있던데 타이머 강좌를 하면서 문제가 되진 않나요?
[A] 당연히 사용되는 클럭주파수에 따라 타이머 주기가 달라진답니다. 본 강좌를 공부하시고 나면 클럭주파수에 따른 타이머 주기를 계산 할 수 있습니다. 따라서, 특별히 문제되는 것은 없으니 걱정 안하셔도 됩니다. *^^*
[Q] 8051 관련 교재를 공부하다보면 타이머0,1 각각에 타이머모드라는게 존재하던데요.
[A] 그것 때문에 이 글을 쓰게 된 것입니다.
타이머0,1는 각각 모드 0 부터 모드3까지 4가지의 동작모드가 있습니다. 각각의 모드는 설정 방법이나 동작 방식이 상이하므로 정확한 이해가 필요한데, 어떤 동작모드를 사용하느냐에 따라 타이머 관련 응용함수의 구현 방식도 달라지기 때문입니다.
오늘은 맛배기니까 일단 여기까지입니다. 혹시라도 타이머에 대해서 더 궁금하신 분들은아래 링크된문서를 다운받아 읽어보시는 것도 좋을 듯합니다.
문서보기그럼 제2부에서 뵙기로 하죠!!! *^^*
초보자인 저도 보기쉽게 잘 설명해 주셔서 감사합니다.앞으로 잘 부탁 드립니다.