11. 비동기식 전송 - 시작/정지 비트 (Start/Stop Bit), 프레이밍 에러
핵심 인사이트 (3줄 요약)
- 본질: 비동기식 전송은 송수신기가 공통의 클럭을 공유하지 않고, 매 문자(Character, 보통 8비트)의 앞뒤에 **시작 비트(Start Bit, 0)**와 **정지 비트(Stop Bit, 1)**를 붙여 문자 단위로 수신기의 타이머를 동기화하는 방식이다.
- 가치: 불규칙하게 발생하는 데이터(예: 키보드 입력, 센서 통신)를 보낼 때 유용하며, 송수신 하드웨어(UART) 구조가 극도로 단순해져 저비용 구현이 가능하지만 약 20%의 대역폭 오버헤드가 발생한다.
- 융합: 수신기가 기대한 타이밍에 정지 비트(1)를 발견하지 못하면 **프레이밍 에러(Framing Error)**가 발생하며, 이는 양측의 전송 속도(Baud Rate) 불일치나 물리적 노이즈가 원인으로, 실무 L1/L2 트러블슈팅의 핵심 지표가 된다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념:
- 시작 비트 (Start Bit): 통신 선로가 아무 데이터를 보내지 않는 유휴(Idle, 논리 1) 상태에서, 데이터의 시작을 알리기 위해 전압을 논리 0으로 떨어뜨리는 첫 번째 펄스다.
- 정지 비트 (Stop Bit): 데이터 비트(보통 8비트) 전송이 끝났음을 알리기 위해 선로를 다시 유휴 상태(논리 1)로 복귀시키는 펄스(1비트 또는 2비트 길이)다.
- 프레이밍 에러 (Framing Error): 수신기가 시작 비트를 기준으로 타이머를 작동시켜 정해진 비트 수만큼 읽은 후, 마지막에 반드시 있어야 할 '정지 비트(1)' 자리에 '0'이 읽혔을 때 발생하는 치명적 동기화 실패 오류다.
-
필요성: 사람이 키보드를 칠 때 A를 누르고 B를 누르는 시간 간격은 일정하지 않다. 만약 이 데이터를 동기식(프레임)으로 묶어서 보내려면 B가 눌릴 때까지 무작정 기다리거나 빈 데이터를 채워야 한다. 이를 피하기 위해 언제든 1바이트가 준비되면 앞뒤로 깃발(Start/Stop)을 달아 독립적으로 던져버리는 비동기식 프레이밍(Framing) 기법이 필수적이었다. 비록 깃발 때문에 오버헤드는 생기지만, 송수신기가 거대한 클럭을 공유할 필요 없이 각자의 값싼 초시계(오실레이터)만으로 통신할 수 있게 해 주었다.
-
💡 비유: 육상 릴레이 경주에서 선수가 언제 도착할지 모르는 상황이다. 다음 주자(수신기)는 멍하니 기다리다가 이전 주자가 **"나 간다!"(Start Bit)**라고 소리치는 순간 자신의 초시계를 누르고 손을 뻗어 바통(데이터)을 잡는다. 바통 전달이 끝나면 이전 주자가 **"다 줬어!"(Stop Bit)**라고 외치며 손을 뗀다. 만약 초시계가 고장 나서 엉뚱한 타이밍에 손을 잡으려 하면 바통을 떨어뜨리게 되는데, 이것이 프레이밍 에러다.
-
프레임 구조와 에러 발생 시각화:
┌─────────────────────────────────────────────────────────┐
│ 비동기식 전송 구조 및 프레이밍 에러 (Framing Error) 발생 원리 │
├─────────────────────────────────────────────────────────┤
│ │
│ [정상적인 비동기 프레임 수신 (Baud Rate 일치 시)] │
│ Idle (1) │ Start(0) │ Data (8 bit: 01000001) │ Stop(1) │ Idle (1) │
│ ──────────┐ ┌─┐ ┌───────────────┐ ┌──────────│
│ └──────────┘ └────────┘ └─────────┘ │
│ 수신 샘플링: ↑(시작) ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑(확인!) │
│ 결과: 정확히 8개의 데이터를 읽고 마지막에 Stop(1)을 정상 확인. 성공! │
│ │
│─────────────────────────────────────────────────────────│
│ [프레이밍 에러 발생 (수신기의 Baud Rate가 너무 느릴 때)] │
│ 송신 신호: │ Start(0) │ Data (8 bit: 01000001) │ Stop(1) │ Idle (1) │
│ 수신 샘플링: ↑(시작) ↑ ↑ ↑ ↑ ↑(확인!) │
│ (박자가 느려 데이터의 중간을 읽음) │
│ 결과: 수신기가 "마지막 비트(Stop)를 읽을 차례!"라고 생각하고 읽은 지점이 │
│ 송신 신호의 데이터 영역 중 '0'인 부분임. │
│ 판독: "Stop Bit가 1이어야 하는데 0이네? 동기화 실패(Framing Error)!" │
└─────────────────────────────────────────────────────────┘
[다이어그램 해설] 수신기는 평소에 선로가 1(전압이 떠 있는 상태)인지 감시하다가 0으로 뚝 떨어지면 타이머를 켠다. 수신기는 사전에 약속된 속도(예: 9600bps)에 맞춰 비트의 정중앙을 정확히 타격하며 샘플링한다. 8번의 타격 후 9번째 타격 지점은 반드시 Stop Bit 구간이므로 무조건 1이어야 한다. 하지만 만약 송신기는 115200bps로 쏘는데 수신기가 9600bps로 읽고 있다면, 타격 간격이 너무 넓어서 수신기가 마지막이라고 타격한 지점이 사실은 다음 데이터의 중간(0)이거나 엉뚱한 곳이 된다. 수신기는 이를 즉각 프레이밍 에러로 규정하고 해당 바이트 전체를 쓰레기통에 버린다.
- 📢 섹션 요약 비유: 친구와 1초에 한 글자씩 말하기로 약속(Baud Rate)하고 대화를 시작(Start)했는데, 친구가 흥분해서 0.5초에 한 글자씩 랩을 쏟아내면, 내가 끝(Stop)이라고 생각한 시점에 여전히 친구가 침을 튀기고 있어 대화가 완전히 꼬여버리는(Framing Error) 것과 같습니다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
비동기식 프레임 (Asynchronous Character Frame) 구조
하나의 문자를 전송하기 위해 캡슐화되는 비동기 프레임은 전 세계적으로 UART (Universal Asynchronous Receiver-Transmitter) 칩을 통해 표준화되어 있다.
- Idle State (유휴 상태): 논리 '1' (마이너스 전압, RS-232 기준 -12V). 단선(0V)과 구분하기 위해 유휴 상태를 전압이 있는 1로 유지한다.
- Start Bit (1 bit): 논리 '0'. 유휴 상태에서 0으로 떨어지는 **하강 에지(Falling Edge)**가 동기화의 기준점이 된다.
- Data Bits (5 ~ 8 bits): 실제 전송할 데이터. 보통 LSB (Least Significant Bit, 최하위 비트)부터 먼저 보낸다.
- Parity Bit (0 ~ 1 bit): 오류 검출을 위한 짝수/홀수 패리티. (현대 통신에서는 주로 생략, None)
- Stop Bit (1, 1.5, 또는 2 bits): 논리 '1'. 수신기가 문자를 다 읽고 다음 문자의 Start Bit(0)를 기다릴 수 있도록 강제로 선로를 1 상태로 띄워주는 역할을 한다. 최소 1비트 이상의 시간을 보장해야 한다.
재동기화 (Resynchronization) 메커니즘
동기식 통신은 한 번 클럭을 맞추면 수천 바이트를 쏘지만, 비동기식 통신은 **매 문자(8비트)마다 타이머를 리셋(재동기화)**한다.
- 이유: 두 장비의 발진기(오실레이터)는 물리적으로 100% 동일할 수 없다. 예를 들어 송신기가 1% 빠른 클럭을 가지고 있다면, 1비트를 보낼 때마다 타이밍 오차가 1%씩 누적된다.
- 8비트를 보낼 때 오차는 8% 누적되어 여전히 비트의 정중앙 근처를 샘플링할 수 있다.
- 하지만 만약 100비트를 연속으로 보낸다면 오차가 100% 누적되어 1비트 전체가 밀려버린다.
- 따라서 10비트(Start 1 + Data 8 + Stop 1) 단위로 잘라서 통신을 끝내고, 다음 Start Bit가 올 때 수신기의 타이머를 다시 0초로 강제 초기화(Resynchronization)하여 오차 누적을 원천 차단하는 것이다.
프레이밍 에러 (Framing Error)의 본질
프레이밍 에러는 단순한 노이즈로 데이터(0/1)가 뒤바뀌는 '비트 에러(Bit Error)'와 차원이 다르다. 프레이밍 에러는 구조적 동기화의 붕괴를 의미한다.
-
원인 1. Baud Rate 불일치: 송신은 115200bps, 수신은 9600bps로 설정된 경우.
-
원인 2. 데이터 포맷 불일치: 송신은
8-Data, 1-Stop, 수신은7-Data, 2-Stop으로 설정된 경우, Stop Bit를 찾는 위치가 어긋난다. -
원인 3. 하드웨어 노이즈 (Break 현상): 선로에 강한 전기적 충격이 가해져 Start/Stop 비트 영역이 뭉개진 경우. 특히 선로가 끊어지거나 장비 전원이 나가면 선로 전압이 0이 되는데, 수신기는 이를 무한한 0의 연속(계속 Start Bit가 들어오고 Stop Bit는 없는 상태)으로 착각하며 Break Condition (연속 프레이밍 에러) 경고를 뿜어낸다.
-
📢 섹션 요약 비유: 자를 대고 선을 그을 때, 조금 삐뚤어진 자(클럭 오차)로 1m를 계속 그으면 끝에서 엄청난 오차가 생깁니다. 하지만 10cm마다 자를 떼었다가 다시 대고(재동기화, Start Bit) 그으면 오차가 누적되지 않아 꽤 정확한 선을 그릴 수 있는 원리입니다.
Ⅲ. 융합 비교 및 다각도 분석
비교 1: 비동기식(UART) 파라미터 조합에 따른 효율성 분석
실무에서 콘솔 접속 시 설정하는 9600, 8, N, 1의 의미와 오버헤드:
- 8: Data Bits
- N: No Parity (패리티 없음)
- 1: Stop Bit 1개
- 총 프레임 길이 = Start(1) + Data(8) + Parity(0) + Stop(1) = 10 bits.
- 전송 효율 (Efficiency) = 유효 데이터(8) / 전체 프레임(10) = 80% (나머지 20%는 버려지는 대역폭)
만약 신뢰성을 높이기 위해 9600, 7, E, 2 (7데이터, 짝수 패리티, 2스톱)를 쓴다면:
- 총 프레임 길이 = Start(1) + Data(7) + Parity(1) + Stop(2) = 11 bits.
- 전송 효율 = 7 / 11 = 약 63.6%
- 오버헤드가 극심해진다. 현대 통신이 이런 파라미터를 버리고 동기식으로 전환한 이유가 수치로 명확히 드러난다.
과목 융합 관점
-
컴퓨터구조 (CA) / 임베디드: 마이크로컨트롤러(MCU) 내부에는 이 시작/정지 비트를 하드웨어적으로 자동 삽입하고 제거해 주는 UART (Universal Asynchronous Receiver/Transmitter) 칩이 내장되어 있다. CPU는 귀찮은 프레이밍 작업 없이 단순히 UART의 버퍼 레지스터에 1바이트를 쓰기(Write)만 하면, 하드웨어가 알아서 Start/Stop을 붙여 직렬 핀(TX)으로 쏘아준다.
-
정보보안 (Security): 비동기식 콘솔 통신은 중간에 누군가 선을 가로채어 RX 핀에 다른 노트북을 물리면(Man-in-the-Middle), 관리자 몰래 수많은 커맨드를 텍스트로 보낼 수 있다. 암호화 레이어가 전혀 없는 L1 베이스밴드 통신이기 때문이다.
-
📢 섹션 요약 비유: 내가 보낸 과일 상자(Data) 무게보다 그 상자를 포장한 나무 궤짝과 밧줄(Start/Stop Bit) 무게가 더 많이 나가면 배송비가 엄청 아깝겠죠? 비동기식은 포장지 낭비가 너무 심해서 대량 배송에는 절대 쓰이지 않습니다.
Ⅳ. 실무 적용 및 기술사적 판단
실무 시나리오
-
시나리오 — 데이터센터 라우터 초기 세팅 시 외계어 출력 (Garbage Text): 신규 Cisco 라우터에 콘솔 케이블(RS-232)을 꽂고 Putty로 접속했다. 부팅 메시지가 나와야 하는데, 화면에
~@#$$%^&*()같은 쓰레기 값만 미친 듯이 올라온다. [해결책] 100% Baud Rate Mismatch로 인한 프레이밍 에러 및 디코딩 실패 현상이다. 장비의 디폴트 콘솔 속도는 9600bps인데, 접속 프로그램 설정이 115200bps로 되어 있어 수신기가 1개의 비트를 여러 비트로 쪼개서 샘플링하고 엉뚱한 ASCII 문자로 변환해 화면에 뿌린 것이다. Putty 세션을 닫고Speed: 9600으로 변경하여 접속하면 정상적인 영어 텍스트가 출력된다. -
시나리오 — 산업용 제어망 (SCADA/PLC)에서의 프레이밍 에러 알람 폭주: 공장 컨베이어 벨트를 제어하는 PLC 컨트롤러와 센서 간의 RS-485 비동기식 통신망에서 주기적으로 5분마다 "Framing Error" 로그가 발생하며 로봇 팔이 멈춘다. [해결책] Baud Rate 설정은 동일하지만 프레이밍 에러가 난다면 **물리적 노이즈(EMI)**가 원인이다. 로봇 팔의 대형 모터가 기동할 때 발생하는 강력한 전자파가 통신선에 유도되어, Stop Bit 구간(1이어야 함)의 전압을 일시적으로 0으로 깎아내린 것이다. 수신기는 Stop Bit가 없어진 것을 보고 프레이밍 에러를 선언했다. 엔지니어는 통신 케이블을 차폐(Shielded) 연선으로 교체하고 접지(Grounding)를 보강하여 전압 출렁임을 막아야 한다.
비동기 통신 장애 시 계층적 접근을 위한 의사결정 흐름은 다음과 같다.
┌───────────────────────────────────────────────────────────────────┐
│ 비동기식 직렬 통신(UART/Console) 장애 진단 의사결정 플로우 │
├───────────────────────────────────────────────────────────────────┤
│ │
│ [터미널 접속 시 화면에 아무것도 안 나오거나 쓰레기 문자(Garbage) 출력] │
│ │ │
│ ▼ │
│ 아예 반응이 없고, 키보드를 쳐도 화면에 글자가 안 찍히는가? │
│ ├─ 예 ─────▶ [물리적 결선/TX-RX 교차 문제 의심] │
│ │ │ │
│ │ └─▶ [Null Modem (크로스) 케이블 사용 여부 확인]│
│ │ │
│ └─ 아니오 (쓰레기 문자가 쏟아지거나 알람 로그 발생) │
│ │ │
│ ▼ │
│ 소프트웨어의 통신 파라미터(Baud Rate, Data bit, Stop bit)가 동일한가?│
│ ├─ 예 ─────▶ [외부 노이즈 개입에 의한 Stop Bit 훼손 (Framing Error)]│
│ │ │ │
│ │ └─▶ [차폐 보강, 케이블 길이 축소, 그라운드 확인] │
│ │ │
│ └─ 아니오 ──▶ [설정 불일치로 인한 샘플링 실패. 9600-8-N-1 로 통일] │
└───────────────────────────────────────────────────────────────────┘
[다이어그램 해설] 직렬 통신에서 화면이 먹통인 것은 선로(TX-RX 핀 매핑)의 L1 문제이고, 외계어가 깨져 나오는 것은 클럭 타이밍이 어긋나 Start/Stop 프레이밍이 무너진 L2(데이터링크) 수준의 문제다. 실무 엔지니어는 증상만 보고도 물리 단선인지 설정(타이밍) 오류인지 즉각 분리해 낼 수 있어야 한다.
도입 체크리스트
- 기술적: 자체 개발한 임베디드 보드에 UART 통신을 구현할 때, 내장된 오실레이터(RC 클럭)의 온도에 따른 오차율이 $\pm 2%$를 초과하지 않는지(초과 시 프레이밍 에러 발생) 오실로스코프로 검증했는가?
- 운영·보안적: 랙 마운트 서버들의 직렬 콘솔 포트를 한곳으로 모아주는 콘솔 서버(Console Server) 장비 도입 시, 수십 개의 포트가 각각 다른 Baud Rate 장비와 물려도 개별 포트별 독립적 프레이밍 설정이 가능한지 확인했는가?
안티패턴
-
소프트웨어적 오류로 오해: 쓰레기 문자가 출력될 때 애플리케이션의 텍스트 인코딩(UTF-8, EUC-KR) 설정만 주야장천 바꾸며 테스트하는 행위. 비동기식 콘솔의 외계어 출력은 99% 하드웨어 계층의 Baud Rate 미스매치로 인한 프레이밍 붕괴 현상이므로, 소프트웨어 폰트를 만지작거리는 것은 시간 낭비다.
-
📢 섹션 요약 비유: 라디오 주파수를 100MHz에 맞춰야 방송이 들리는데 100.5MHz로 맞춰놓고 "왜 노래 가사가 외계어처럼 지직거리냐"며 라디오 스피커(소프트웨어)를 뜯어고치려는 것과 같습니다. 주파수 다이얼(Baud Rate)을 정확히 맞추는 게 먼저입니다.
Ⅴ. 기대효과 및 결론
정량/정성 기대효과
| 구분 | 동기식 전송 시도 시 (근거리/저속) | 비동기식 Start/Stop 적용 시 | 개선 효과 |
|---|---|---|---|
| 정량 | 수신단에 값비싼 클럭 복원 회로 요구 | 단순 UART 칩 ($1 미만) 으로 해결 | L1 하드웨어 단가 획기적 절감 |
| 정량 | 클럭 동기화 핀(케이블) 별도 포설 필요 | 핀 3개 (TX, RX, GND)로 통신 완결 | 물리적 배선 및 커넥터 부피 최소화 |
| 정성 | 데이터가 없어도 동기 유지 위해 더미 전송 | 칠 때만 보내고 안 칠 땐 유휴(Idle) 대기 | 키보드, 마우스 등 간헐적 I/O 제어에 최적화 |
미래 전망
- 레거시의 불멸, IoT 디버깅의 최전선: 수 기가비트의 동기식 광통신 시대에도, 비동기식 UART(Start/Stop bit) 통신은 절대 사라지지 않는다. 스마트싱스, 라즈베리파이 등 IoT 에지 디바이스의 칩 레벨 디버깅과 리눅스 커널 패닉 발생 시 유일하게 살아남아 에러 로그를 뱉어내는 최후의 생명선이기 때문이다. 가장 단순한 것이 가장 튼튼하다.
- USB 가상 COM 포트 통합: 과거 PC 뒤에 있던 거대한 9핀 RS-232 포트는 사라졌지만, 그 비동기식 프로토콜과 프레이밍 구조는 USB-to-Serial 컨버터 칩(FTDI 등)을 통해 USB 패킷망 위에서 가상 논리 포트로 영원히 계승되어 사용되고 있다.
참고 표준
- EIA RS-232 / V.24: 비동기식 직렬 통신을 위한 전기적 신호 전압(예: 논리 0은 +3V~+15V, 논리 1은 -3V~-15V) 및 핀 배열을 정의한 국제 표준.
- UART 규격 (16550 등): 내부 16바이트 FIFO 버퍼를 갖추어, 고속 CPU가 느린 비동기식 통신(Start/Stop 처리)을 기다리지 않고 데이터를 밀어 넣고 빠질 수 있게 해 주는 PC 산업 표준 칩셋.
결론적으로 비동기식 전송의 시작 비트와 정지 비트는, 거대한 시계탑(네트워크 동기망)이 없는 각박한 환경에서 송신기와 수신기가 임시방편으로 눈을 맞추기 위해 만들어낸 "가장 원시적이지만 위대한 악수(Handshake)"다. 오버헤드가 20%에 달하는 비효율적인 통신 방식임에도 불구하고, 회로의 단순성과 유연함이라는 무기를 바탕으로 반세기가 지난 지금까지도 모든 IT 장비의 생사를 확인하는 콘솔 접속의 제왕으로 군림하고 있다. 프레이밍 에러를 두려워하지 않고 Baud Rate를 자유자재로 맞출 수 있는 자만이 진정한 하드웨어 쟁이로 인정받는다.
┌──────────────────────────────────────────────────────────────────┐
│ 비동기식 통신 프레이밍 (Start/Stop) 철학 및 적용 로드맵 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 1970s (통신의 태동) 2000s (구형 인터페이스 퇴출) 2020s+ (디버깅의 심장) │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ [텔레타이프 / 모뎀] → [RS-232 시리얼 포트] → [에지 디바이스 UART] │
│ │ │ │ │
│ ├─ 사람이 치는 속도 대응 ├─ 콘솔 및 마우스 연결용 ├─ 라즈베리파이 GPIO 핀 │
│ ├─ 1문자 단위 Start/Stop ├─ 속도 느려 USB로 대체됨 ├─ 커널 패닉 디버깅 포트 │
│ └─ 프레이밍 개념 확립 └─ 네트워크 백본용으론 사장 └─ 영원히 죽지 않는 불멸의 규격│
│ │
│ 초점 이동: "원거리 통신의 주력" → "장비 세팅용 인터페이스" → "하드웨어 최하단 최후의 보루"│
└──────────────────────────────────────────────────────────────────┘
[다이어그램 해설] 비동기식 통신(UART)의 흥망성쇠를 보여준다. 처음엔 전화선을 통한 주력 통신망이었다. 하지만 대용량 고속화의 요구에 밀려 인터넷망의 지위를 동기식(이더넷)에 넘겨주고 뒷방 늙은이 신세가 되었다(2000년대). 그러나 최첨단 시대가 도래한 지금, 서버가 뻗고 이더넷 칩셋이 죽어버린 극한의 패닉 상태에서 하드웨어 엔지니어가 유일하게 보드에 핀 3개를 꽂아 장비의 심장 박동을 살려낼 수 있는 수단은 오직 '오버헤드 낭비가 심하지만 가장 단순한 구조의 Start/Stop 기반 UART'뿐이다. 화려한 고속망의 밑바닥을 지탱하는 가장 든든한 닻(Anchor)인 셈이다.
- 📢 섹션 요약 비유: 수만 명이 동시에 카카오톡을 주고받는 최첨단 스마트폰(동기식 통신망) 시대에도, 산에서 길을 잃었을 때 나를 살리는 것은 가장 원시적이고 단순하게 불을 깜빡이는 SOS 모스부호 랜턴(비동기식 Start/Stop 통신)입니다.
📌 관련 개념 맵 (Knowledge Graph)
| 개념 명칭 | 관계 및 시너지 설명 |
|---|---|
| UART (범용 비동기 송수신망) | 병렬 데이터를 받아 Start/Stop 비트를 앞뒤로 붙이고 정해진 Baud Rate 타이밍에 맞춰 직렬 파형으로 쏘아주는 핵심 IC 칩이다. |
| Baud Rate (통신 속도) | 비동기식 통신에서 Start Bit 직후 데이터를 쪼개어 읽는(샘플링) 타이머의 기준 간격으로, 양측이 반드시 동일해야 프레이밍 에러가 발생하지 않는다. |
| 오버헤드 (Overhead) | 8비트 데이터를 보내기 위해 10비트(Start+Stop)를 사용함으로써 발생하는 대역폭의 낭비율(20%)로, 비동기식을 대용량 통신망에서 퇴출시킨 원인이다. |
| 동기식 전송 (Synchronous) | 비동기식의 문자 단위 오버헤드 낭비를 없애기 위해, 수백 바이트를 한 프레임에 묶어 별도의 클럭으로 타이밍을 완벽히 맞추는 상위 호환 아키텍처다. |
| 패리티 비트 (Parity Bit) | 비동기 프레임 내에서 0/1이 뒤바뀌는 비트 에러를 아주 단순하게 검출하기 위해 Data와 Stop 사이에 선택적으로 끼워 넣는 검사 비트다. |
👶 어린이를 위한 3줄 비유 설명
- 비동기식 전송은 징검다리를 건널 때, 내가 한 칸을 뛸 때마다 "시작!(Start)" "끝!(Stop)" 하고 친구에게 소리쳐 주는 거예요.
- 내가 언제 뛸지 몰라도 친구는 내 목소리(Start)를 듣고 정확히 타이밍을 맞춰서 내 모습을 사진으로 찍어줄 수 있어요.
- 하지만 실수로 타이밍이 안 맞아서 내가 발을 딛기도 전에 친구가 "찰칵" 사진을 찍어버리면 엉뚱한 바닥만 찍히게 되는데, 이걸 앗차! 프레이밍 에러라고 부른답니다.