마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 06. 세치기의 기초
첨부파일


  「세치기」의 기초

【세치기란? 】

세치기란, 도대체 무엇일까요? 말로부터 상상할 수 있다
의는, 어쨌든 열에 끼어든다든가, 혼잡하는 중에 하락해 들어간다
(이)라든가 하는 정경이 상상됩니다.
프로그램의 세계에서의 세치기도 완전히 같은 의미로 사용되고 있습니다.
즉, 어느 프로그램을 실행중에, 다른 프로그램을 실행시키고
싶다. 이것이 세치기라고 하는 개념이 낳아진 계기입니다.

그럼 어떤 때에 그런 세치기가 필요한 것일까요?

·예를 들면, 매우 긴 처리 시간이 걸리는 연산을 하고 있을 때
 무엇인가 키를 눌러 연산의 방법을 수정하거나 일단 멈추거나
 하고 싶다.
·프린터 등에 인쇄하고 있는 동안에, 키보드로부터 다음의 데이터
 (을)를 입력하고 싶다.
·다른 기기와 통신으로 데이터를 수신하면서, 전의 데이터의 그래프
 표시를 하고 싶다.
·모터를 제어하면서, 다른 기기로부터의 데이터를 수신하고 싶다.
·일정시간 마다 센서를 체크하면서, 밸브등의
 제어를 하고 싶다.

이상과 같은 예로 밝혀지도록(듯이), 무엇인가 하면서 다른 일을 동시
(으)로 하고 싶을 때에, 세치기가 유효하게 활용됩니다.



【세치기 처리의 흐름】

세치기에 의해, 프로그램이 어떻게 실행될까를 그림으로
표현하면(자) 밑그림과 같이 흘러 나오고 나타낼 수가 있습니다.




즉, A의 처리중에 끼어들어 1이 들어가면(자), 거기에 대응하는 B와
말하는 처리를 우선적으로 실행해, B의 처리가 완료하면(자), A의 계속의
처리로 돌아온다고 하는 흘러 나오고 실행합니다.

한층 더 A의 처리중에 끼어들어 2가 발생하면(자) 우선 대응한다
새치기 처리 C를 실행해, 그 중에 D의 처리를 개시하는 것을 기억
해 A로 돌아와, A의 처리가 완료하면(자), D의 처리를 개시한다고 하는 류
로 하거나 합니다.

이러한 때에 과제가 되는 것은, A로 돌아오기전 상태와 같은 상태
(으)로 해 돌아오지 않으면 정상적으로 계속 처리를 할 수 없다고 하는 것입니다.

컴퓨터 내부에서 상태란 왜, 그것을 기초로 되돌리려면 어떻게 한다
의입니까?

우선, 컴퓨터 상태는 모두레지스터에 기억되고 있습니다.
거기서 컴퓨터 내부 상태를 기억해 두려면 , 모든 레지
스튜디오의 현재가를 기억해, 보존해 두면 좋게 됩니다.

그러나, PIC에서는 모든 레지스터를 보존하는 것은, 읽어내는 것이
할 수 없는 레지스터도 있어, 불가능합니다.
그러나, 세치기 처리를 만드는 방법을 아래와 같은 규칙을 지켜 만들면,
모든 레지스터를 보존하지 않아도, 몇 개의 레지스터만을 보존하면
정상적으로 돌아오도록(듯이) 할 수가 있습니다.

그럼 이 규칙과는 도대체 어떤 것일까요?


【세치기 처리의 제한 규칙】

세치기로부터 정상적으로 돌아오도록(듯이) 해, 한편 끼어들어진 처리를 정상
에 계속할 수 있는 것처럼 하기 위해서는, 아래와 같은 일을 지킬 필요가 있습니다.

(1) 연산 레지스터 상태를 보존해 복귀시킨다.
 PIC에서는,W레지스터, STATUS 레지스터, PCHL 레지스터
 메모리에 보존한다.
 즉, 세치기가 들어간 시점에서 즉, 상기 레지스터를 메모리
 에 보존해 두어, 세치기 처리로부터 돌아올 때에, 그것들을 메모리
 (으)로부터 레지스터에 복귀시킨다.
 또 끼어들어 처리 중(안)에서 상기 3개의 레지스터 이외를 직접 변경한다
 때로는, 변경되는 것을 다른 처리가 의식하고 있어, 변경되고
 (이)라고도 문제 없게 되어 있는 것.
 예를 들면, TRIS 레지스터의 같은, 입출력을 변경하는 레지스터를
 변경되어도, 다른 처리는 문제 없게 되어 있는 것.
 
(2) 세치기 처리 중(안)에서 한층 더 세치기를 받아들인다(이것을
 다중 세치기그렇다고 한다) (일)것은 금지한다.

(3) 세치기 처리 중(안)에서, 데이타메모리의 내용(즉 변수)을
 변경할 때는, 그 변수를 사용하는 처리는, 모두 변경되는 것
 (을)를 의식하고 있어, 언제 변경되어도 문제 없게 만들어져
 있는 것.
 (보통으로 사용하고 있으면 자연스럽게 그렇게 되고 있을 것입니다. )

(4) 처리 시간을 의식해 두어, 언제 세치기가 들어가 그 쪽으로
 시간을 할애해져도 문제 없게 해 두는 것.
 아무래도 고속으로 해야 하는 처리나, 정확한 처리 시간
 (을)를 필요로 하는 처리 중(안)에서는, 세치기는 금지해 둘 필요가
 .
 또, 세치기 처리 자신도, 나머지 장시간의 처리 시간로부터
 없게 만들 필요가 있습니다.

(5) 이것은 당연한 일입니다만, 써브루틴에의 CALL 명령은 반드시
 RETURN로 돌아와 두도록(듯이) 하는 것이 필요합니다.
 특히 PIC의 경우에는 스택 포인터-를 읽고 쓰기할 수 없기 때문에
 큰 문제는 되지 않습니다만, 스택을 정상적으로 사용하는 듯
 (으)로 하기 위해서(때문에)는,CALL와 RETURN는 항상 페어로사용되고 있다
 일이 필요합니다. 그렇게 하지 않으면 정상적으로 돌아올 수가 없는(뿐)만
 (이)가 아니게 스택을 다 사용해 버려, 스택 메모 리오-바 플로우
 되어 동작 불능이라고 하는 상태가 되어 버립니다.


【세치기의 요인】

그럼 실제로 세치기의 요인으로서 준비되어 있으려면
어떤 물건이 있는 것일까요?

(1) 입력의 변화
 입출력 핀에 입력되고 있는 신호가 변화했을 때 끼어든다.
 이것은, 예를 들면 스윗치를 눌렀을 때, 모터의 회전을
 반대로 한다든가, 말하는 것 같은 때의 스윗치의 접점의 입력에
 사용합니다.
 또 연속 펄스의 카운트를 하는 것 같은 경우에도 사용하는 것
 (을)를 할 수 있습니다만, 남아 고속의 펄스에 사용할 수 없습니다.

(2) 타이머의 주기 마다의 세치기

 PIC를 포함하고 대체로의 마이크로컴퓨터에는 타이머가 내장되고 있습니다.
 이 타이머의 카운트업 종료에 의해 세치기를 걸친다
 일로, 일정한 시간 후, 혹은, 정주기에 세치기를 얻는다
 일을 할 수 있습니다.
 이것은 예를 들면, 어느 시간의 지연을 갖게하고 싶을 때 등에 사용
 .

(3) A/D변환의 종료

 내장 A/D변환의 변환 종료에 의해 끼어드는 것으로, 일정시간의
 필요한 A/D변환동안을 다른 처리에 시간을 돌릴 수가 있으므로
 시간을 유효 활용할 수가 있습니다.


【세치기가 들어가는 것처럼 하려면? 】

우선, 세치기 자신이 받아들일 수 있도록(듯이) 하려면 어떻게 하면
좋은 것일까요?
설정이든지 실행이 필요한 항목을 열거하면(자) 아래와 같이 됩니다.

(1) 4번지에 끼어들어 처리 프로그램에의 점프 명령이 있는 것

(2) INTCON 레지스터의 GIE 비트가 ON가 되고 있어 세치기 전체
 하지만 허가되고 있는 것.

(3) INTCON 레지스터에 있는, 세치기 요인 마다의 허가 비트가
 ON가 되고 있는 것.

(4) 하드웨어의 접속이 제대로 되고 있는 것(당연)


【새치기때의 동작 상세】
  PIC로 새치기가 발생했을 때의 동작은 아래와 같은 같은 순서가 됩니다.

   ·새치기가 발생하면(자) 이후의 다른 새치기를 금지하기 위해(때문에)
    INTCON 레지스터의 GIE 비트를 OFF
           ↓
   ·실행중의 명령의 다음의 명령의 주소를 스택에 보존
    (다른 레지스터는 보존되지 않는다)
           ↓
   ·강제적으로 프로그램 카운터에 0004 H가 세트 되고
    4번지에 점프 한다
           ↓
   ·새치기 처리 프로그램을 개시. 필요하면 그 직전
    의 레지스터를 보존합니다
           ↓
   ·새치기의 요인을 조사하기 (위해)때문에, INTCON 레지스터의 새치기 플래그
    (을)를 조사해 플래그가 「1」의 요인의 처리를 실행합니다.
    그리고 그 플래그를 BCF 명령으로 「0 클리어」해 둡니다.
           ↓
   ·복수의 새치기 플래그가 「1」이 되어 있으면 모든 관련
    새치기 처리를 실행합니다.
           ↓
   ·새치기 처리 종료. 직전에 비율 붐비어졌을 때의 레지스터를 복귀
    시킨다. 마지막에 RETFIE 명령을 실행한다.
           ↓
   ·RETFIE 명령의 실행에 의해, 스택에 보존되고 있던 새치기
    때의 주소에 점프 해 복귀한다. 동시에 다음의 새치기를
    허가하기 위해(때문에) INTCON 레지스터의 GIE 비트가 재세트 된다.

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com