-"인터럽트 인터럽트 PIC16F877에서

O

octron

Guest
안녕,
이 서브루틴 16F877에서 다른 인터럽트에 의해 중단되고 인터럽트 가능한 무엇입니까???

감사합니다

 
때, 다른 모든 인터럽트를 자동으로 GIE 깃발을 취소하여 비활성화되어 시작됩니다 방해하지만, 어떤 경우에는 오는 이벤트를 인터럽트 컨트롤러가 해당 플래그를 설정합니다.인터럽트의 끝에서 RETFIE 명령어에서 GIE 설정 인터럽트 (인터럽트)를 허용 반환됩니다.만약 다른 이벤트를 방해 방해하는 동안, 그것을 실행이 될 후에 인터럽트오고있습니다.

 
사실, 그것이 가능합니다.

일반적으로 할 때 서비스 루틴 (ISR이) ISR이 때 루프를 입력 할 첫번째 일은 모든 인터럽트 인터럽트 쓰기 dissable입니다.다음 () 이유는 그것을 첫 번째 자리에 불려 수정 인터럽트 서비스입니다.그 전에 ISR이 모든 인터럽트를 다시 활성화 종료.

그러나, 만약 당신이 모두 비활성화하려면 어떻게합니까 그럼 내가 그것을 24 시간 동안 인터럽트 인터럽트 호출하는 것이 가능 인터럽트 겠지.명심 프로그램 카운터에서만 8 레벨 스택을하고있다.

여기에 테스트입니다.PIC는 칩 세트 일부 카운터 가치에 방해 ...그때에 인터럽트가 발생하면 코드 말 :

ISR이 : * 해제 interrups 않아
endless_loop :
고토 endless_loop
최종 ISR이

코드가 무한 루프에 내동댕.동안 주위를 "변경"칩의 PIC 인터럽트 원인이 반복됩니다.ISR이 내부를 ON LED가있습니다.

이건 아마 테우스의 시뮬레이션 될 수 있 ...

Mr.CoolMr.Cool

 
마찬가지로 차가운 씨가 말한 것처럼, 할 수있습니다.보통, 당신이 다시 GIE 비트를 설정하여 retfie 명령을 실행하여 서비스를 방해했다.아무도 다시 당신을 막을 수있는 완전히 중단하기 전에 이전 서비스를 방해함으로써, 그래서 다시 중단될 수있습니다.

하지만, 그것은 매우 위험하고 몇 가지 고려하여야한다.그것은 최초의 방해가 인정하고 다음 GIE 비트가 설정된 것이 중요합니다.만약 당신이 xxxIF 비트, 다시 GIE 설정을 다시 발사하고 다시 끝없이 그리고 동성 애자 방해가 동일하게 유지됩니다 명확하지 않으면, 당신이 붙어있어 ...

다음을 염두에두고이 다시 될 인터럽트 실행의 시작과 같은 코드입니다.예를 들어, 일반적으로 int를 입력했을 때 W 및 상태 저장 및 종료에 복원할 수있습니다.만약 당신이 다시 정적 메서드 경우에는 각 등록에 대한 단일 메모리 저장 위치를 예를 들면, 사용하면 초기 W 및 상태 값은 인터럽트 잃어버리게된다.

그리고 물론, 거기는 항상 8 레벨 스택 깊이

그게 최선 인터럽트 안에,하지만 폴링을 사용하는 것이 당신이 결정할 수있는 유일한 것 같네요.

안부
toxadi

 
만약 당신이 정말 당신이 어떤 16F877 핀 호환 예를 들어 PIC18F452을위한 PIC18 CPU를 사용해야합니다.

이것은 CPU가 2 높은 우선 순위 낮은 우선순위 인터럽트 인터럽트 수있습니다 인터럽트 우선순위를 방해하고있다.

안부 인사

 
난 거기가 올바르게 중첩 인터럽트 PIC16 시리즈의 승 & SFR를 살릴 방법이 있다고 생각
FSRs 중 하나를 사용하여 만들 수있습니다 PIC18 시리즈

 
U 기억 .... 가끔은 그들이 몇 가지있어 프로그램 카운터를 저장 스택에 단 7 위치가 ... 당신 스스로에 의해 retfie 무시하고 멀리 이동을 수행하여 PC에 저장해야합니다.

 

Welcome to EDABoard.com

Sponsor

Back
Top