MCU 타이머 / 프리스케일러 계산기

이 무료 MCU 타이머 & 프리스케일러 계산기는 시스템 클럭, 프리스케일러, ARR 값으로 타이머 주파수, 주기, 오버플로 시간을 계산합니다. 목표 주파수에 맞는 최적의 프리스케일러/ARR/CCR 조합을 찾는 역방향 PWM 솔버, 인터랙티브 SVG 파형 다이어그램, STM32·ESP32·Arduino·nRF52·PIC·RP2040 MCU 프리셋을 제공합니다.

MCU의 메인 클럭 주파수 (프리스케일러 적용 전)

클럭 분주 값 (실제 분주비 = PSC + 1, STM32 기준)

타이머가 0에서 ARR까지 카운트 후 리로드 (주기 = ARR + 1)

타이머 주파수

1.000 kHz

타이머 주기

1.000 ms

오버플로 시간

1.000 ms

타이머 클럭 (프리스케일러 후)

1.000 MHz

오버플로당 카운트

1,000

최대 타이머 주기

59.6523 s

제안이 있으신가요?

새로운 도구를 요청하거나 개선 사항을 제안해 주세요 — Slack 커뮤니티에 참여하세요!

Slack에서 피드백 남기기

MCU 타이머 / 프리스케일러 계산기란?

MCU 타이머 / 프리스케일러 계산기는 임베디드 시스템 엔지니어가 마이크로컨트롤러의 하드웨어 타이머를 설정하는 데 도움을 주는 도구입니다. 하드웨어 타이머는 정밀한 시간 지연 생성, 펄스 폭 측정, 모터 제어 및 LED 디밍용 PWM 신호 생성, 주기적 인터럽트 트리거 등에 사용되는 핵심 주변장치입니다. 타이머 주파수는 시스템 클럭을 프리스케일러와 자동 리로드 레지스터(ARR)로 나누어 결정됩니다. 이 값들은 MCU 계열에 따라 특정 범위의 정수여야 하므로 목표 주파수를 달성하기 위한 올바른 조합을 찾으려면 신중한 계산이 필요합니다. 특히 Arduino/AVR처럼 고정 값이나 nRF52처럼 2의 거듭제곱으로 프리스케일러 옵션이 제한되는 경우에 더욱 그렇습니다.

MCU 타이머 계산기 사용 방법

  1. 프리셋 탭에서 MCU를 선택하거나 시스템 클럭과 타이머 비트 폭을 직접 입력합니다
  2. 타이머 계산기 탭에서 프리스케일러와 ARR 값을 입력하여 결과 주파수, 주기, 오버플로 시간을 확인합니다
  3. PWM 계산기 탭에서 목표 주파수와 듀티 사이클을 입력합니다
  4. '최적 설정 찾기'를 클릭하여 오차가 가장 적은 프리스케일러/ARR/CCR 조합을 얻습니다
  5. 주파수 정확도와 분해능 사이의 트레이드오프를 보여주는 대안 설정을 검토합니다
  6. 실제 타이밍을 보여주는 인터랙티브 PWM 파형 다이어그램을 확인합니다
  7. MCU 프리셋 값을 타이머 또는 PWM 계산기 탭에 직접 적용합니다

자주 묻는 질문

실제 PWM 주파수가 목표와 다른 이유는 무엇인가요?

타이머 레지스터(프리스케일러와 ARR)는 정수 값만 저장할 수 있으므로 실제 주파수는 가장 가까운 근사값입니다. 예를 들어 72 MHz 클럭에서 정확히 50 kHz를 원하면 이상적인 ARR은 1439(72M / 50k - 1)로 정확히 50 kHz를 제공합니다. 하지만 33 kHz의 경우 이상적인 ARR은 ~2181.18이며, 2181로 반올림하면 33.003 kHz(0.01% 오차)가 됩니다. 계산기는 실제 달성 가능한 주파수와 오차율을 표시합니다.

PSC+1과 직접 프리스케일러 값의 차이는 무엇인가요?

STM32 등 ARM 기반 MCU는 PSC+1을 실제 분주비로 사용합니다(PSC=0은 1분주, PSC=1은 2분주). Arduino/AVR MCU는 1, 8, 64, 256, 1024와 같은 고정 프리스케일러 값을 사용합니다. nRF52는 2의 거듭제곱 프리스케일러(1, 2, 4, 8, ..., 512)를 사용합니다. 이 계산기는 모든 규약을 처리하며 선택한 MCU에 맞는 레지스터 값을 표시합니다.

서보 모터용 50 Hz PWM 신호는 어떻게 생성하나요?

서보 모터는 50 Hz(20 ms 주기) PWM 신호가 필요합니다. 72 MHz STM32F103: 프리스케일러 71(72분주, 1 MHz 타이머 클럭), ARR 19999(20000 카운트 = 20 ms). 일반적인 서보 범위 1-2 ms 펄스 폭에 대해 CCR은 1000~2000입니다. 16 MHz Arduino: 프리스케일러 64와 16비트 타이머, ARR=4999로 정확히 50 Hz를 얻습니다.

매우 느린 타이머(초 또는 분 단위)가 필요한 경우 어떻게 하나요?

긴 주기를 위해 프리스케일러와 ARR 값을 모두 최대화합니다. 16비트 타이머는 65535까지 카운트할 수 있고, 최대 프리스케일러와 함께 수 초의 주기를 달성할 수 있습니다. 72 MHz STM32에서 PSC=65535, ARR=65535: 주기 = 65536 × 65536 / 72M ≈ 59.6초. 더 긴 주기를 위해 32비트 타이머(STM32F4/H7, 최대 40억 카운트) 또는 여러 타이머를 체인으로 연결하세요.

관련 도구