2011-03-27 2 views
0

35 개의 입력을 모니터링하고 싶습니다. x 방향으로 20 회, y 방향으로 15 회. 우리는 각 입력에 대해 인터럽트를 생각하고 있으므로 변경이있을 때마다 조치를 취할 수 있지만 각 핀에 인터럽트를 설정하는 방법은 무엇입니까?Arduino 메가의 각 핀에 인터럽트를 설정할 수 있습니까?

아니면 인터럽트없이 다른 방법이 있습니까?

답변

1

내가 아는 것처럼 Arduino는 이것을 할 수 없습니다. 그러나 무한 루프를 사용하여 각 행을 폴링 할 수 있습니다. 각 입력에 대해 이전 값을 저장하고 현재 값과 비교할 수 있습니다. Arduino의 무한 루프가 꽤 싸다고합니다. 이 방법은 신호 변경 사이에 계산을 수행하는 경우 다소 어려워집니다.

또 다른 방법은 입력에서 이전 값과 현재 값을 비교하는 동일한 폴링 루틴을 시작하는 하나의 인터럽트 라인을 사용하는 것입니다.

별도의 인터럽트를 사용한다는 생각이 너무 약해 보입니다. 인터럽트를 처리하는 동안 보통 다른 인터럽트는 비활성화되므로이 시간 동안 입력 변경 신호가 손실 될 수 있습니다. 하드웨어 디자인에서 예상 했습니까?

아마 당신이 당신의 요구 사항을 좀 더 자세히 설명해 준다면 해결책을 제안하는 것이 더 간단 할 것입니다.

+0

우리는 ir 센서 그리드를 가지고 있으며 어떤 x와 y가 막혔는지 감지함으로써 우리는 x, y 좌표를 얻습니다. 그게 도움이되는지 모르십니까? – infinitloop

+0

이 경우 공유 인터럽트 회선이 작동해야합니다. 입력이 변경되면 인터럽트 핀의 값을 변경하고 인터럽트 처리기에서 x 및 y 값을 모두 읽습니다. – Yaroslav

관련 문제