사용자 도구

사이트 도구

English

cublocapp:an31004:index

AN31004 - 포트입력 인터럽트 확장

큐블록에서 INT 입력 핀은 4 개밖에 없기 때문에 불편한 경우가 있습니다. MSB시리즈는 아예 INT입력 기능이 없습니다.

외부로부터 갑자기 어떤 처리를 요구하는 입력을 처리하기 위해 INT 인터럽트 기능을 반드시 사용해야 하는 경우에, 본 어플리케이션 노트에서 소개하는 방법을 이용하면 INT 기능을 확장 (INT가 없는 경우에는 추가)하여 사용할 수 있습니다.

바로 LADDER 인터럽트를 이용하는 것입니다. 레더는 10mS 마다 루프를 돌기 때문에 어떤 입력 핀의 변화를 감지할 수 있습니다. 입력 핀이 LOW 에서 HIGH 로 바뀌었을 때 ON LADDERINT 가 발생되도록 하는 것입니다.

결선 방법

포트0,1에 PUSH스위치를 연결하세요.

소스 프로그램

레더 쪽에는 아래와 같은 레더로직을 입력하세요.

an31004.zip

베이직 소스는 다음과 같습니다.

 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 

동작 확인

소스를 입력하고, 다운로드 및 실행시켜 보세요. P0, P1 포트에는 풀다운 저항이 있는 스위치입력을 연결한 뒤 스위치를 눌러보면, 디버그 터미널에 다음과 같은 멧세지가 표시됩니다.

스위치가 LOW 에서 HIGH 로 바뀌었을 때, ON LADDERINT 가 발생되어 처리된 것입니다.

주의할 사항

이 방법을 사용할 때 유의할 점은 LADDER LOGIC 의 스캔타임이 10mS 라는 점입니다. 즉, 10mS 보다 짧은 펄스가 발생되는 신호라면 이 방법을 사용할 수 없습니다. 적어도 30mS 이상 되는 신호에 사용하는 것이 좋습니다.

또한 이 방법으로, 동시에 여러 개의 입력신호를 받아들이지 못합니다. 만약 동시에 입력이 들어온다면, 레더로직상의 가장 아래쪽에 위치한 신호만 검출됩니다. 이 프로그램의 경우 P0 과 P1 이 동시에 LOW 에서 HIGH 가 되었다면 P1 인터럽트만 처리됩니다. (가능한한 꼭 필요한 1개만 사용하시를 권합니다.) 이런 점을 감안하고 사용하시기 바랍니다.

폴링에지에서 인터럽트 발생

폴링에지 (HIGH 에서 LOW 로) 신호를 받아들이고 싶다면, 레더로직에서 A 접점을 B 접점으로 바꾸면 됩니다.

큐블록 어플리케이션 노트

cublocapp/an31004/index.txt · 마지막으로 수정됨: 2017/10/16 01:14 저자 Comfile Technology