2009-09-15 6 views
0

우리는 간단한 구조를 가지고 데이터의. 인터럽트 내부에서 I2C 계층 (버스)에서 데이터를 읽는 작업을 신호로 보냅니다.대하여 인터럽트 기반 통신

데이터가 제한된 경우 일반적으로 데이터를 읽고 상위 계층으로 전송하는 데 많은 문제가 없습니다. 이 데이터가 매우 큰 경우에는 인터럽트가 오랜 시간 묶여있을 것입니다.

첫 번째 질문은 바로

  1. 암 I?

  2. 내가 옳은 경우, 어떻게 피하는가? ... 아니면 다른 해결책이 될까요?

답변

5

일종의 '작업자 스레드'가 있습니다. 커널 스레드라고도하며 I2C 인터페이스에서 데이터를 가져 와서 버퍼링하고 시스템의 다른 부분으로 넘겨주는 등의 작업을합니다. 인터럽트를 사용하십시오 루틴은 커널 스레드를 차단 해제합니다. 그렇게하면 시스템이 수행해야하는 다른 임무가있는 경우 인터럽트 처리기가 그렇게하지 못하게되며 적시에 장치에서 데이터를 가져옵니다.

3

인터럽트 루틴을 한 번 실행하면 전체 패킷을 읽지 않아야합니다. 하드웨어 지원에 따라 하나의 샘플/비트/바이트를 처리해야하며 버퍼에 데이터를 저장하고 패킷이 완료되면 작업 만 신호로 보냅니다.