그라운드 임베디드 유튜브 구독

노트 / 디지털 논리

카운터와 시프트 레지스터

클럭을 셀 때마다 1씩 올라가는 카운터는 MCU 타이머의 원형이고, 비트를 한 칸씩 옮기는 시프트 레지스터는 SPI와 UART의 원형입니다.

GROUND EMBEDDED · 정리 노트디지털 논리 05카운터와 시프트 레지스터01카운터02시프트 레지스터

카운터

플립플롭 여러 개를 이어 클럭이 들어올 때마다 값이 1씩 증가하게 만든 회로입니다. MCU 타이머의 CNT 레지스터가 바로 이것입니다.

  • 분주: 카운터의 최상위 비트는 클럭을 2ⁿ으로 나눈 주파수가 됩니다. 프리스케일러의 원리입니다.
  • 비교: 카운터 값이 정해진 수(ARR)에 닿으면 0으로 돌아가고, 다른 수(CCR)와 같을 때 출력을 뒤집으면 PWM이 됩니다.

시프트 레지스터

클럭마다 저장된 비트가 한 칸씩 옆으로 이동합니다.

  • 직렬 → 병렬: 한 줄로 들어온 비트 8개를 모아 한 바이트로 만듭니다. SPI와 UART 수신기가 이렇게 동작합니다.
  • 병렬 → 직렬: 한 바이트를 한 비트씩 내보냅니다. 송신기입니다.

74HC595 같은 시프트 레지스터 칩을 쓰면 MCU 핀 3개로 LED 8개, 16개를 제어할 수 있습니다. SPI 통신 하나로 핀을 늘리는 가장 흔한 방법입니다.