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

노트 / 디지털 논리

카운터와 시프트 레지스터

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

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

카운터

CLKQ0Q101230123
2비트 카운터. Q0는 클럭이 올라갈 때마다, Q1은 Q0가 내려갈 때마다 뒤집힙니다.

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

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

시프트 레지스터

직렬 입력Q0Q1Q2Q3병렬 출력
시프트 레지스터. 클럭마다 한 칸씩 옆으로 밀립니다. 직렬로 받아 병렬로 내보냅니다.

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

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

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

3D 실험실에서 직접 돌려 보기값을 바꾸며 이 노트의 원리를 확인합니다→영상으로 이어 보기공부법과 진로 시리즈 15편2025 임베디드 프로그래밍 공부 순서 | 공부 방법 | 로드맵FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →