사용자 도구

사이트 도구

English

cublocapp:an31004:index

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
cublocapp:an31004:index [2017/10/16 01:08]
Comfile Technology [소스 프로그램]
cublocapp:an31004:index [2017/10/16 01:14] (현재)
Comfile Technology [주의할 사항]
줄 1: 줄 1:
 +====== AN31004 - 포트입력 인터럽트 확장 ======
 +
 +큐블록에서 INT 입력 핀은 4 개밖에 없기 때문에 불편한 경우가 있습니다. MSB시리즈는 아예 INT입력 기능이 없습니다.
 +
 +외부로부터 갑자기 어떤 처리를 요구하는 입력을 처리하기 위해 INT 인터럽트 기능을 반드시 사용해야 하는 경우에, 본 어플리케이션 노트에서 소개하는 방법을 이용하면 INT 기능을 확장 (INT가 없는 경우에는 추가)하여 사용할 수 있습니다.
 +
 +바로 LADDER 인터럽트를 이용하는 것입니다. 레더는 10mS 마다 루프를 돌기 때문에 어떤 입력 핀의 변화를 감지할 수 있습니다. 입력 핀이 LOW 에서 HIGH 로 바뀌었을 때 ON LADDERINT 가 발생되도록 하는 것입니다.
 +
 +===== 결선 방법 =====
 +
 +포트0,​1에 PUSH스위치를 연결하세요.
 +
 +{{ :​cublocapp:​an31004:​onint.png?​nolink |}}
 +
 +===== 소스 프로그램 =====
 +
 +레더 쪽에는 아래와 같은 레더로직을 입력하세요. ​
 +
 +{{ :​cublocapp:​an31004:​an31004.zip |}}
 +
 +{{ :​cublocapp:​an31004:​an31004.png?​nolink |}}
 +
 +베이직 소스는 다음과 같습니다.
 +
 +<code xbasic>
 + Const Device = CB280
 + ​Usepin 0,In
 + ​Usepin 1,In
 + On Ladderint Gosub OCCURINT
 + Set Ladder On
 +
 + Do
 + Loop
 +
 +OCCURINT:
 + If _D(0) = 1 Then
 +   Debug "Input P0 Rising Edge",​Cr
 + ​Elseif _D(0) = 2 Then
 +   Debug "Input P1 Rising Edge ==!",​Cr
 + End If
 + ​Return ​
 +</​code>​
 +
 +===== 동작 확인 =====
 +
 +소스를 입력하고,​ 다운로드 및 실행시켜 보세요. P0, P1 포트에는 풀다운 저항이 있는 스위치입력을 연결한 뒤 스위치를 눌러보면,​ 디버그 터미널에 다음과 같은 멧세지가 표시됩니다. ​
 +
 +{{ :​cublocapp:​an31004:​onint_debug.png?​nolink |}}
 +
 +스위치가 LOW 에서 HIGH 로 바뀌었을 때, ON LADDERINT 가 발생되어 처리된 것입니다.
 +
 +===== 주의할 사항 =====
 +
 +이 방법을 사용할 때 유의할 점은 LADDER LOGIC 의 스캔타임이 10mS 라는 점입니다. 즉, 10mS 보다 짧은 펄스가 발생되는 신호라면 이 방법을 사용할 수 없습니다. 적어도 30mS 이상 되는 신호에 사용하는 것이 좋습니다.
 +
 +또한 이 방법으로,​ 동시에 여러 개의 입력신호를 받아들이지 못합니다. 만약 동시에 입력이 들어온다면,​ 레더로직상의 가장 아래쪽에 위치한 신호만 검출됩니다. 이 프로그램의 경우 P0 과 P1 이 동시에 LOW 에서 HIGH 가 되었다면 P1 인터럽트만 처리됩니다. (가능한한 꼭 필요한 1개만 사용하시를 권합니다.) 이런 점을 감안하고 사용하시기 바랍니다. ​
 +
 +
 +
 +
 +===== 폴링에지에서 인터럽트 발생 =====
 +
 +폴링에지 (HIGH 에서 LOW 로) 신호를 받아들이고 싶다면, 레더로직에서 A 접점을 B 접점으로 바꾸면 됩니다. ​
 +
 +{{ :​cublocapp:​an31004:​onint2.png?​nolink |}}
 +
 +[[cublocapp:​index|큐블록 어플리케이션 노트]]