임베디드 시스템과 펌웨어
인터럽트 핸들러 안에서 피해야 할 것으로 가장 적절한 것은 무엇입니까?
- A플래그 변수에 1을 써서 메인 처리에 알리는 것
- B인터럽트 원인을 나타내는 비트를 지우는 것
- Cprintf로 긴 문자열을 출력하거나 무언가가 일어날 때까지 계속 기다리는 루프와 같은 시간이 오래 걸리는 처리
정답과 해설 보기
정답: C. printf로 긴 문자열을 출력하거나 무언가가 일어날 때까지 계속 기다리는 루프와 같은 시간이 오래 걸리는 처리
인터럽트 핸들러가 오래 동작하면 그동안 다른 인터럽트에 응답하지 못하고 메인 처리도 멈춥니다. printf는 출력이 끝날 때까지 시간이 걸리고 내부에서 인터럽트를 사용하기도 하므로 특히 위험합니다. 핸들러에서는 데이터를 받아 버퍼에 넣거나 플래그를 세우는 등 최소한의 처리만 하고, 무거운 처리는 메인 처리나 태스크에 맡깁니다. 원인 비트를 지우는 것도 잊어서는 안 됩니다.