Architecturas | 외부 인터럽트 예제

외부 인터럽트 예제

프로그래밍 인터페이스가 잘못 설계되지 않은 일부 장치는 서비스를 요청했는지 여부를 확인할 수 있는 방법을 제공하지 않습니다. 그들은 그것을 원하지 않을 때 서비스를 받을 경우 잠기거나 잘못 행동할 수 있습니다. 이러한 장치는 스퓨리어스 인터럽트를 용인할 수 없으므로 인터럽트 라인 공유도 용납할 수 없습니다. ISA 카드는 종종 저렴한 디자인과 건설로 인해이 문제로 악명이 높습니다. 하드웨어 논리가 저렴해지고 새로운 시스템 아키텍처가 공유 가능한 인터럽트를 의무화함에 따라 이러한 장치는 훨씬 희귀해지고 있습니다. 이 튜토리얼에서 숫자는 왼쪽 푸시 버튼 (인터럽트 핀 D3)가 LED가 켜지고 디스플레이인터럽트2를 표시 할 때마다, 아두 이노 나노에 연결된 (16×2) LCD에 지속적으로 표시되는 0에서 증가하고, 오른쪽 푸시 버튼 (인터럽트)를 보여줍니다 핀 D2)를 누르면 LED가 꺼지고 디스플레이가 인터럽트1을 표시합니다. 빠른 이동 차를 고려, 갑자기 반대 방향으로 다른 차에 의해 충돌하는 경우, 첫 번째 일이 일어나는 것은 자동차에 존재하는 가속도계 센서가 갑자기 디 가속을 감지하고 존재하는 마이크로 컨트롤러에 외부 인터럽트를 트리거 자동차. 그런 다음 MCU는 에어백을 즉시 배치하는 전기 신호를 생성합니다. 차량에 존재하는 마이크로 컨트롤러는 차량의 감지 속도, 다른 센서 확인, 에어컨 온도 제어 등과 같은 많은 것들을 동시에 모니터링합니다. 그렇다면 몇 초 만에 에어백이 갑자기 열리는 이유는 무엇일까요? 인터럽트 신호는 우선 순위가 가장 높은 여기에서 사용됩니다. 프로그램이 항상 로터리 인코더의 펄스를 포착하여 펄스를 놓치지 않도록하려면 프로그램이 인코더의 센서 라인을 지속적으로 폴링해야하기 때문에 다른 작업을 수행하는 프로그램을 작성하는 것이 매우 까다로울 것입니다. 펄스가 발생했을 때 펄스를 잡기 위해.

다른 센서는 클릭을 잡으려고 하는 사운드 센서를 읽거나 동전 방울을 잡으려고 시도하는 적외선 슬롯 센서(사진 인터럽터)와 같은 유사한 인터페이스를 가지고 있습니다. 이러한 모든 상황에서 인터럽트를 사용하면 마이크로 컨트롤러가 입력을 놓치지 않고 다른 작업을 수행할 수 있습니다. 이 Arduino 인터럽트 튜토리얼에서는 숫자가 0에서 증가하고 두 개의 푸시 버튼이 인터럽트를 트리거하는 데 사용되며 각 버튼은 D2 및 D3에 연결됩니다. 인터럽트를 나타내는 LED가 사용됩니다. 하나의 푸시 버튼을 누르면 LED가 켜지고 디스플레이가 인터럽트2를 표시하고 꺼지고 다른 푸시 버튼을 누르면 LED가 꺼지고 디스플레이가 인터럽트1을 표시하고 꺼집니다. 인터럽트를 처리하는 데 소요되는 처리 시간의 과도한 양에 의해 전체 시스템 성능이 심각하게 저해되는 현상을 인터럽트 스톰이라고 합니다. 아래 표에서 인터럽트 번호는 attachInterrupt()에 전달할 번호를 참조합니다. 역사적 이유로 이 번호 매기기는 항상 ATmega 칩의 인터럽트 번호 매기기와 직접 일치하지는 않습니다(예: int.0은 ATmega2560 칩의 INT4에 해당). 프로세서는 인터럽트 처리기의 일부에 도착할 때까지 인터럽트를 무시하고 인터럽트를 다시 활성화하는 « 인터럽트에서 반환 » 명령이 있습니다. 이러한 인터럽트는 하드웨어에 의해 해석되며 매우 빠릅니다. 이러한 인터럽트는 상승 또는 하강 또는 낮은 레벨의 이벤트에 트리거하도록 설정할 수 있습니다.

하드웨어에서 별개의 구성 요소로 구현되는 경우 IBM PC의 프로그래밍 가능한 인터럽트 컨트롤러(PIC)와 같은 인터럽트 컨트롤러 회로가 인터럽트 장치와 프로세서의 인터럽트 핀 간에 여러 소스의 멀티플렉스로 연결될 수 있습니다. 일반적으로 사용할 수 있는 하나 또는 두 개의 CPU 라인으로 인터럽트됩니다. 메모리 컨트롤러의 일부로 구현된 경우 인터럽트는 시스템의 메모리 주소 공간에 매핑됩니다. 소프트웨어 인터럽트를 예외라고도 합니다. 인터럽트와 달리 프로세서 클럭과 관련하여 예외가 동시에 발생합니다.