{{위키데이터 속성 추적}}
{{다른 뜻}}[[파일:Timer.jpg|섬네일|right|단순한 디지털 타이머의 모습.]]

'''타이머'''({{llang|en|timer}})는 특별한 종류의 [[시계]]로, 일련의 사건이나 프로세스를 제어하거나 측정하는데 사용할 수 있다. 주로 특정 목적의 사건이 진행될 때, 진행되는 시간을 측정하는 기능을 말한다. 예를 들어 [[스톱워치]]는 숫자 0부터 숫자를 올려 세어 숫자의 진행이 얼마의 시간이 걸렸는지를 측정한다. 스톱워치와는 달리, [[모래시계]] 개념의 타이머는 일정한 시간 간격으로부터 숫자를 내려 세어 끝나는 시간을 측정한다.

타이머는 기계적, 전자기계적, 전기적, 소프트웨어적인 방식을 취하기도 하며 다양한 목적에 적용된다.

현대의 모든 [[컴퓨터]]들은 하나 이상의 [[디지털]] 타이머를 포함하기도 한다.  [[컴퓨터 시스템]]에서 [[주기적 타이머]]는 주기적 사건 처리가 필요할 경우, 주기를 만들기 위해 디지털 [[계수기|카운터]] 회로를 사용하여 특정 시간이 되었음을 알리는 디지털 신호로 얻어 낸다. 하드웨어적인 카운터 회로로부터 발생한 신호는 [[마이크로프로세서]]의 인터럽트 처리 방식과 결합하여 해당 소프트웨어를 처리함으로써 주기적 요구사항을 처리할 수 있다.<ref>{{웹 인용 |url=http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf |제목=AVR Timer |확인날짜=2015-06-15 |보존url=https://web.archive.org/web/20150724032006/http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf |보존날짜=2015-07-24 |url-status=dead }}</ref><ref>{{웹 인용 |url=http://web.mit.edu/6.115/www/document/8051.pdf |제목=8051 Timer |확인날짜=2015-06-15 |보존url=https://web.archive.org/web/20150618100515/http://web.mit.edu/6.115/www/document/8051.pdf |보존날짜=2015-06-18 |url-status=dead }}</ref>

정해진 시간을 초과하면 소리 신호 등을 이용하여 단순히 이를 알려주기도 하지만 타임 스위치와 같은 전기 스위치를 운영하여 전력을 차단하기도 한다. 전기 시스템에서 [[프로그래머블 로직 컨트롤러|PLC]]에 내장된 타이머는 전기 시스템 제어에 사용할 수 있다. [[래더 다이어그램]]에 타이머 기능을 추가하여 일정 시간 간격을 기능을 구현할 수 있다.

== 컴퓨터에서의 활용 ==

컴퓨터에서 가장 필수적인 모듈로 사용한다. 소프트웨어로 정확한 시간을 측정하는 것은 프로그램이 복잡해지면 거의 불가능해진다. 물론 특정 기간에 특정 [[마이크로프로세서]]의 [[기계어]] 묶음을 실행하여 시간을 측정할 수도 있으나, 보통의 컴퓨터 시스템에서는 여러 가지 일이 복합적으로 이루어지기 때문에 [[디지털 회로]]([[하드웨어]])에 의한 시간 회로가 필요하다. 따라서 거의 모든 컴퓨터에서 사용되며, [[MCU]] 등의 임베디드 시스템에서도 필수적이다. 아주 간단한 MCU에서는 사용하지 않을 수도 있다.
컴퓨터 시스템에서 하드웨어인 디지털 회로(타이머 모듈)로부터 일정 시간이 되면 [[인터럽트]] 등을 사용하여 소프트웨어로 다시 카운터하는 방식으로 좀 긴 시간의 타이머를 구성할 수도 있다. 보통 카운터가 8/16비트를 많이 사용하기 때문에 긴 시간을 하드웨어로 구성하는 경우는 드물다.
보통 마이크로프로세서의 [[클럭 신호]]를 이용하기 때문에 미리 2진 카운터로 주파수를 낮추고, 다시 카운터 회로에 의해 원하는 시간을 얻는 것이 일반적이다.

=== 컴퓨터에서 타이머 모듈 ===

{{본문|주기적 타이머}}

타이머는 주기적 시간을 얻을 때 사용하는 디지털 카운터 회로 모듈이다. [[마이크로프로세서]]가 소프트웨어 방식으로 일정시간을 카운터 하는 방식은 복잡한 기계어 실행으로 인해 긴 시간 측정은 일반적으로 불가능하다. 따라서 별도의 카운터 회로를 갖는 타이머 모듈을 사용하여 일정한 주기적 시간 처리를 하는 시스템 요구에 대응한다. MCU의 기본 모듈로 사용한다. 8051의 초기 모델의 경우 2개가 장착되어 있다. MCU는 다양한 개수의 타이머를 장착하여 모델을 분리하여 다양한 성능에 따른 요구 사항을 만족하도록 구성한다.<ref>{{웹 인용 |url=http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx |제목=AVR 패밀리 |확인날짜=2015-06-15 |보존url=https://web.archive.org/web/20140214204728/http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx |보존날짜=2014-02-14 |url-status=dead }}</ref>

기본적으로 디지털 카운터 회로이기 때문에 클럭이 필요한데, 보통 [[마이크로프로세서]]에 클럭을 원천으로 사용한다. 이 주파수가 높아 우선 프리스케일 카운터 회로를 사용하여 주파수를 낮춘다. 다시 이 낮아진 주파수를 가지고 8,16비트 등의 카운터 회로를 사용하여 주기를 얻는다. 보통 8비트 MCU의 경우 8비트와 16비트 등을 많이 사용한다.

타이머는 하드웨어 카운터 이기 때문에 이 모듈을 사용하여 주기적 시간도 얻지만 한 주기 동안 HIGH와 LOW의 상태의 시간을 조절하여 [[PWM]] 기능을 지원하는 경우도 많다. 주기와 PWM의 시간 조절을 하나의 타이머 모듈에 장착하고 레지스터 설정에 따라 다양한 기능이 선택적으로 동작하도록 하는 방식을 많이 사용한다.

=== 실시간 시계 ===
{{본문|실시간 시계}}

[[실시간 시계]](Real Time Clock, RTC) 모듈은 시간을 전용으로 카운터 하는 회로로 시간을 세는 디지털회로 모듈이다. 시간을 세기 위해 카운터 회로와 별도의 수정 발진자(결정 진동자)와 배터리가 필요하다. 보통 32.768kHz 수정발진자를 사용하여 시분초와 날짜를 만드는 카운터의 클럭 신호로 사용한다. RTC는 컴퓨터 전원이 나가도 시간이 유지되어야 하기 때문에 마이크로프로세서 개입 없이 초부터 년까지의 시간을 디지털 회로의 카운터에 의존한다. 전원이 없는 상태에서 동작하는 것이 일반적이므로 별도의 배터리 전원을 사용하여 카운터 회로가 동작한다.<ref>[http://datasheets.maximintegrated.com/en/ds/DS12885-DS12C887A.pdf RTC DS12C887]</ref>
<ref>{{웹 인용 |url=http://www.maximintegrated.com/en/products/digital/real-time-clocks/DS1307.html#popuppdf |제목=RTC DS1307 |확인날짜=2015-06-15 |보존url=https://web.archive.org/web/20150502185602/http://www.maximintegrated.com/en/products/digital/real-time-clocks/DS1307.html#popuppdf |보존날짜=2015-05-02 |url-status=dead }}</ref>

구성요소는 다음과 같다.
* 날짜와 시, 분, 초 등의 시간을 카운터하는 디지털 카운터 회로 회로
* 카운터 회로에 사용하는 수정 발진자([[결정 진동자]])
* 카운터 회로에 컴퓨터의 전원이 꺼져도 공급하는 배터리

== 전기 시스템에서 활용 ==
[[파일:Time switch.JPG|섬네일|right|250px|타이머 기능을 갖는 콘센트]]
정해진 시간 동안 전기 장치를 가동하는 방법으로 타이머가 장착된 [[콘센트]]를 활용할 수 있다.


== 같이 보기 ==
* [[카운트다운]]
* [[마이크로프로세서]]
* [[디지털 회로]]

== 각주 ==
<references />

== 외부 링크 ==
{{위키공용분류}}
* {{언어링크|en}} [https://www.withustools.com/tools/timer/timer.html withustools - timer]
* {{언어링크|en}} [http://www.tickcounter.com/ 온라인 시계]

{{전거 통제}}

[[분류:타이머| ]]
[[분류:디지털 회로]]
[[분류:전자공학]]