아두이노 인터럽트 예제

{ lcd.begin (16,2); // LCD를 16×2 형 lcd.setCursor (0,0); lcd.print („회로 다이제스트“); lcd.setCursor (0,1); lcd.print („아두 이노 인터럽트“); 지연 (3000); lcd.clear (3000); pinMode (13,출력); 버튼누르면1,상승); 상승 (LOW 에서 HIGH) 부착인터트 (디지털 핀토 인터럽트 (3), buttonPressed2,상승에 핀2에서 외부 인터럽트를 만들기위한 기능; 상승에 pin3에서 외부 인터럽트를 만들기위한 기능 (LOW 에서 HIGH) } 나는 아두 이노와 직접 경험이 없는, 그래서 난 여기에 당신을 도울 수있는 가장 좋은 사람이 아니에요. 그러나 인터럽트 모니터링은 인터럽트에 대한 상승 에지, 떨어지는 가장자리 또는 둘 다에 민감한지 여부에 관계없이 항상 입력 함수인 것 같습니다. 외부 신호에 따라 인터럽트를 발생하려면 핀을 OUTPUT로 설정하지 않아야 합니다. PULLUP 옵션은 단순히 연결이 끊어질 수 있는 핀에 대해 알려진 논리 상태를 유지합니다. 반전은 관여하지 않습니다. 핀이 항상 로직 신호에 의해 구동되는 경우 또는 접지 또는 VCC에 외부 저항이 있는 경우 PULLUP 옵션이 필요하지 않습니다. 핀을 전기적으로 분리할 수 있는 경우 내부 풀업 또는 외부 풀업이 필요합니다. 인터럽트의 또 다른 간단한 예는 „터치“감각에 가장 높은 우선 순위를 가지고 터치 스크린 휴대 전화입니다. 거의 모든 전자 장치는 일반 프로세스를 `중단`하고 특정 이벤트에 대해 더 높은 우선 순위를 두는 일종의 작업을 수행합니다.

인터럽트를 제공한 후 일반 프로세스가 다시 시작됩니다. 이제 우리는 아두 이노 보드에서 인터럽트를 사용하는 방법을 볼 수 있습니다. 두 가지 유형의 인터럽트: 소프트웨어 인터럽트 – 소프트웨어 명령에 따라 발생합니다. „인터럽트 서비스 루틴“(일반적으로 ISR이라고 함)이라는 특수 함수를 사용하여 루틴을 정의할 수 있습니다. 일반적으로 ISR은 다른 코드 조각 간에 계속 사용할 수 있는 휘발성 변수라는 것을 사용하여 ISR이 가능한 한 짧고 빠릅니다. 인터럽트 함수로 이동하고 코드를 실행하기 위해 프로그램이 현재 수행하는 것보다 모든 작업을 중지하면 인터럽트가 즉시 실행됩니다. 인터럽트도 더 많이 중단된 소프트웨어 내에서 동일한 지점으로 돌아갑니다. 인터럽트를 구현하는 다른 방법이 있습니다. 특히 아두 이노 보드의 다른 모든 핀을 사용할 수 있도록 레지스터 및 레지스터 마스크를 사용하여.

인터럽트는 다른 작업을 수행 할 수 있도록 아두 이노의 현재 작업을 중지합니다. 좋은 질문! 데이터 시트를 보면, 외부 인터럽트 (EICRA가)와 달리 핀 변경 인터럽트를 사용할 때 트리거 유형 (변경, 낮음, 높음, 상승, 상승)을 지정하기위한 레지스터가 없습니다. 핀 변경 인터럽트라고 불리기 때문에 변경에서만 트리거해야 하므로 논리적입니다. 그러나 내가 제시 한 PinChangeInt 라이브러리에서 트리거 이벤트를 지정하는 옵션이있는 것으로 나타났습니다. 당신은 중단없이 당신은 잠을 당신의 아두 이노를 넣어 다시 일어나 기대할 수 없기 때문에 중단이 필요합니다 (일반적으로. 제한된 상황에서 중단없이 잠에서 깨어날 수있는 방법이 있습니다). 잠을 잘 수 없다면, 여름철에 데스 밸리를 달리는 마라톤 선수처럼 힘이 들 것입니다. 절전 모드는 매우, 아주 작은 전력을 소비 … 그러나 설정하는 데 특별한 노력이 필요합니다.