Devin.KR

GPIO와 버튼 상태 표시

입력 튐을 제거하고 기록 시작·정지와 LED 표시를 연결합니다.

진도 0%

레슨

  1. 입력·출력과 전압 조건

    가상 핀의 방향·풀업·활성 레벨·전압 허용 범위를 연결표로 제출합니다.

  2. 버튼 튐을 시간표로 읽기

    시각과 버튼 값 목록에서 20ms 유지된 변화만 이벤트로 출력합니다.

  3. C 디바운서 구현

    HAL 입력에 20ms 안정 구간과 눌림 에지 검출을 적용합니다.

  4. 기록과 LED 연결

    한 번의 눌림으로 기록 모드를 바꾸고 LED에 활성 상태를 표시합니다.

GPIO와 버튼 상태 표시 미션

m03-register-hal의 산출물을 이어받습니다. 독립 starter에도 직전 모듈의 검증된 산출물을 포함합니다. 센서 기록기와 상태 표시 장치를 PC에서 완성합니다.

요구사항

  • 앞 모듈 HAL과 버퍼에 버튼 토글 및 LED 상태 표시를 추가하고 튐 이벤트 fixture를 보관합니다.
  • C 코드는 gcc -std=c11 -Wall -Wextra -Werror로 빌드하고 Python 보조 코드는 표준 라이브러리만 사용합니다.
  • m03 미션 solution의 HAL·Buffer·회귀를 보존합니다. button.c 완성본을 이용해 controller.c의 PRESS 토글을 구현하고 LED는 recording을 표시합니다.
  • 정지 확정 호출에서는 저장하지 않으며, 가득 찬 버퍼와 raw 범위 오류에도 버튼·LED 제어를 계속합니다. read/write·시각 실패는 -1로 반환하고 모드·필터·새 기록을 확정하지 않습니다.
  • fixtures/bounce.csv의 11개 행을 gpio-demo와 fixture_check.py로 대조하고 active-high 핀 계약·가상 전압·실물 검증 한계를 README에 남깁니다.

완료 기준

  • 미션 압축 해제 디렉터리에서 make test가 종료 코드 0으로 끝나고 기존 모듈의 회귀 검사도 통과합니다.
  • 0·3·8ms 튐 뒤 28ms까지 안정된 눌림은 한 번만 감지하며 길게 누름은 중복 토글이 없고 해제 후 다음 눌림만 재감지합니다.
  • button 28개·controller 36개·controller fault 8개 조건이 0 failures이며 fixture 11 rows passed가 출력됩니다.
  • gpio-demo가 28ms에 시작하고 170ms에 정지하며 최종 5개 샘플을 보존합니다. 기존 HAL의 대체·실패·레지스터 검사도 통과합니다.
make test
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 요구사항과 테스트 fixture의 대응이 드러납니다.
  • 하드웨어 의존 경계와 실패 처리의 선택 이유를 설명합니다.
  • 미션별 측정·관찰 증거를 실제 실행한 결과로 남깁니다.