본문 바로가기
임베디드 쌩초보 공부/TI - C2000 MCU

T1 F28xx 인터럽트 처리 관련

by 존버매니아.임베디드 개발자 2023. 4. 21.
반응형

꼭 알아야 할 유의사항!
페리펄럴 인터럽트가 한번 발생되고나서 그 뒤에도 인터럽트를 계속해서 발생시키고 싶다면 ISR 마지막에  PIE그룹의 Ack를 유저가 클리어해줘야 한다.

또한 대부분의 패리펄럴들은 유저가 별도로  패리펄럴에서 발생된 인터럽트 플래그를 clear 해줘야 다음 인터럽트도 발생이 가능하다.
그래서 유저 ISR에서 보통 마지막에
해당 패리펄럴의 인터럽트 플래그를 Clear하는 코드와 PIEACK를 지우는 코드를 넣어서 마무리한다.


인터럽트들의 우선순위가 유저 configure 하지  않고 사전에 고정되서 정해져있다. 레퍼런스 매뉴얼에서 확인이 가능함.

그룹이라는 개념이 있다.
각각의 인터럽트는 하나의 그룹에 속한다.
그룹간에도 우선순위가 존재한다.

Interrupt Status Flag , Enable Bit가
각각의 패리펄럴 , PIE , CPU 마다 존재한다.

꼭 알아야 할 유의사항이 있는데
PIE에는 PIEACK라는 레지스터가 있다.
여기에는 16개의 비트가 있는데 각각의 비트가 인터럽트 그룹 하나를 의미한다.
이 비트가 Clear가 되어있어야 패리펄럴의 인터럽트가 cpu로 전달 될 수 있다.
PIEACK가 Clear 인 상태에서 패리펄럴의 인터럽트가 PIE로 전달되면 PIEACK가 1로 Set 되면서 cpu로 신호가 전달된다.

그러고나서 동일한 그룹의 페리펄럴이 또 발생했을때 PIEACK가 클리어가 되어있어야 신호가 CPU로 전달되는데, 한번 SET 되면 유저가 따로 Clear 해주지 않으면 계속 set 되어있어서 인터럽트가 전달이 안된다.

그래서 ISR 코드에 마지막 줄에 PIEACK를 Clear해주는 코드를 넣어야 이후에 발생하는 인터럽트도 정상실행이 가능하다.


반응형