임베디드 시스템과 펌웨어

마이크로컨트롤러에서 AD 컨버터의 변환 결과를 일정한 간격으로 대량으로 가져올 때 DMA를 사용하는 이점으로 올바른 것은 무엇입니까?

  1. AAD 컨버터의 분해능이 자동으로 올라간다
  2. B입력 전압이 자동으로 커진다
  3. C변환이 끝날 때마다 CPU가 인터럽트로 읽을 필요 없이 DMA가 메모리에 나열해 주므로 CPU의 부담이 줄어든다
정답과 해설 보기

정답: C. 변환이 끝날 때마다 CPU가 인터럽트로 읽을 필요 없이 DMA가 메모리에 나열해 주므로 CPU의 부담이 줄어든다

변환할 때마다 인터럽트로 CPU가 결과를 읽으면, 1초에 수만 번 가져오는 경우 인터럽트 오버헤드만으로 CPU 시간의 상당 부분이 쓰입니다. DMA를 사용하면 변환이 끝날 때마다 DMA가 결과를 메모리 배열에 차례로 쓰고, 배열이 가득 찼을 때만 CPU에 알립니다. 타이머로 변환을 시작하도록 설정하는 것과 조합하면, 정확한 간격으로 데이터를 CPU 없이 계속 가져올 수 있습니다.

이 분야 연습하기 분야로 돌아가기

임베디드 시스템과 펌웨어의 다른 문제

  1. C 언어의 비트 필드를 사용한 구조체로 주변 회로의 레지스터를 나타낼 때 주의가 필요한 점으로 올바른 것은 무엇입니까?
  2. 많은 마이크로컨트롤러에서 변경하지 않는 큰 테이블(폰트 데이터 등)을 const를 붙여 선언하는 이점으로 올바른 것은 무엇입니까?
  3. JTAG나 SWD 같은 디버그용 인터페이스로 할 수 있는 것으로 올바른 것은 무엇입니까?
  4. 1 ms마다 일정한 제어 계산을 하고 싶습니다. OS를 사용하지 않는 마이크로컨트롤러에서의 구현으로 가장 적절한 것은 무엇입니까?
  5. 마이크로컨트롤러의 브라운아웃 검출(BOD, 브라운아웃 리셋)의 역할로 올바른 것은 무엇입니까?

이 분야의 비교