본문 바로가기
임베디드 기초

⏱️ 타이머(Timer)란 무엇인가? 소프트웨어적으로 이해하기

by 버그없는토마토 2025. 12. 13.

타이머란 ?


 

안녕하세요, 버그없는토마토입니다 🍅
오늘은 자동차 소프트웨어 개발의 기본 중 기본이지만, 처음 접하면 헷갈리기 쉬운 Timer(타이머)에 대해 알아보겠습니다.
Timer는 단순히 “시간을 재는 기능”이 아니라, ECU의 모든 실시간 제어를 가능하게 하는 핵심 요소입니다.

 

자동차라는 시스템은 시간이 정확하게 맞아떨어져야만 안정적으로 작동합니다.
센서를 읽는 시점, 제어 연산을 수행하는 주기, 모터를 구동하는 타이밍까지 모두 Timer에 의해 관리됩니다.

코드 생성에 있어 가장 기본이라고 할 수 있죠
일단 TASK의 기본단위도 타이머기 때문인데요
그런 밑바탕 말고 기능적으로 접근한다고 해도 Reminder가 몇 초동안 울릴건지, Indication은 몇 초동안 On될건지, 지시등은 몇 초 마다 Toggle할 건지 등등 모든 것은 시간으로 이루어져있습니다.
룰과도 같은 Timer인데요.

1. Timer란 무엇인가?

Timer는 말 그대로 시간을 세는 장치입니다.
하지만 우리가 사용하는 주방 타이머나 스마트폰 타이머와는 다르게,
ECU 내부의 Timer는 마이크로초(µs) 단위까지 측정 가능한 정밀한 하드웨어 기능입니다.

쉽게 말해:

“ECU가 지금 몇 ms가 흘렀는지 정확하게 알 수 있도록 도와주는 시계”

라고 이해하시면 됩니다.


2. ECU에서 Timer가 왜 필요한가?

자동차 소프트웨어는 정확한 주기를 기반으로 작동합니다.

예를 들어,

  • ABS 제어: 5ms마다 계산
  • 모터 제어: 10ms마다 업데이트
  • 배터리 관리 시스템(BMS): 100ms마다 상태 체크
  • CAN 통신 송신: 20ms 주기

이런 반복 제어가 제때 실행되지 않으면 차량 기능이 불안정해집니다.

Timer는 바로 이러한 “주기적 실행”을 보장하는 역할을 합니다.


이해를 위한 사진이지만 개발자로서 불편합니다. 사실 타이머와 스톱워치의 개념은 엄연히 다릅니다.

3. Delay와 Timer의 차이 (초급자들이 가장 헷갈리는 부분)

많은 분들이 Timer와 Delay를 같은 의미로 생각하지만, 둘은 완전히 다릅니다.

✔ Delay

프로그램 흐름을 잠시 멈춤
예) delay(10ms)

문제점: 멈춰 있는 동안 아무것도 못 함


✔ Timer

시간을 재는 장치이며, OS나 응용 소프트웨어가
"특정 시간이 됐을 때" 이벤트를 발생시키도록 함

예)

  • 10ms마다 Task 실행
  • 1초마다 카운터 증가
  • 100ms 후 특정 기능 활성

➡️ Timer는 멈추지 않고 계속 흐름을 유지하면서 시간 기반 제어가 가능합니다.

자동차에서는 Delay를 거의 사용하지 않고,
Timer 기반 스케줄링을 사용해야만 실시간성이 유지됩니다.

카운트 개념과 타이머 개념을 가장 많이 사용합니다.
10ms task가 한번 call될때마다 1++를 하는 개념이 카운트 개념입니다.
그럼 10ms task가 10번 실행돼서 10cnt가 됐을때마다 실행한다면 100ms마다 동작하는 기능이 되겠죠.
Timer의 개념은 말그대로 100ms의 시간을 측정후 100ms일 때 기능을 동작하게 하죠.

4. Timer가 실제로 하는 일

ECU 내부 Timer는 다음과 같은 역할을 합니다.

✔ ① 일정 주기로 Task를 깨운다

OS의 Alarm과 연결되어 Task Activation을 수행합니다.

예:
10ms Timer → 10ms Task 실행
20ms Timer → 20ms Task 실행

✔ ② 센서 읽기 타이밍 관리

예: 10ms마다 전동 시트 위치 센서 값을 읽음

✔ ③ PWM 신호 생성

모터 속도 제어나 LED 밝기 조절은 모두 Timer를 기반으로 합니다.


✔ ④ 시간 경과 측정

예: “스위치가 500ms 이상 눌렸는지” 판단

입력 디바운스, 장시간 누름 감지, 점등 시간 제어 등…
전부 Timer가 있어야 구현할 수 있는 기능들입니다.


5. 자동차에서 Timer는 어떻게 사용될까?

자동차 ECU는 대부분 하드웨어 Timer 모듈(GPT/FTM/STM)을 내장하고 있습니다.
이 Timer가 일정한 속도로 카운터를 증가시키며, OS는 이 카운터를 기반으로 스케줄링을 수행합니다.

ECU 소프트웨어 구조는 크게 이렇게 보입니다:

 
[HW Timer]  
   ↓ Tick Interrupt  
[OS Counter]  
   ↓ Alarm  
[Task Activation]  
   ↓ Runnable 실행

이 흐름이 ECU 제어 시스템의 기본 패턴입니다.

 


6. Timer가 없으면 어떤 문제가 생길까?

이건 생각하지 않아도 문제점이 보이겠죠?
  • 센서 값 갱신이 불규칙해짐
  • 제어 알고리즘이 일정한 시점에 실행되지 않음
  • 통신 지연(특히 CAN 주기 미준수)
  • Watchdog Alive 실패 → Reset 발생
  • 차량 기능이 전체적으로 불안정해짐

결국 Timer는 자동차 ECU에서 가장 중요한 기반 기능 중 하나입니다.


🏁 마무리

Timer는 자동차 소프트웨어에서 단순한 시계가 아니라,
ECU 전체를 움직이게 하는 시간 기반 엔진입니다.

오늘 다룬 내용은 Timer의 기본 개념이었고,

오늘도 버그없는토마토였습니다 🍅