728x90
반응형
내용을 정리하다 보니 복잡해져서 다시 정리 -_-
오늘은 진실로 정리가 필요하구나.
P1/P2인터럽트 플래그와 관련하여 P2IFG 레지스터가 존재하는 데,
이레지스터의 셋팅값에 따라 인터럽트 pending여부를 설정할 수 있다.
Bit = 0 -> No interrupt is pending
Bit = 1 -> An interrupt is pending
GIE의 경우(r2 레지스터 셋팅 값)
Bit = 0 -> An interrupt is pending
Bit = 1 -> No interrupt is pending
으로 정의가 된다.
위의 내용으로 보아 P2IFG(Port Interrupt Flag)와 GIE(General Interrupt Enable)가 상반된 값을 이용하지만
결과적으로 동일한 설정을 하 게 됨을을 알 수 있다.
머릿속이 복잡해지지만 Texas Instruments는 이런 나의 이해를 돕기위하여 매뉴얼을 배포하고 있었다.
====== clear P2IFG reg and set GIE =======
MOV.B &P2IFG, r5 ; read int flag
BIC.B r5, &P2IFG ; clear int flag
EINT ; set GIE to enable Monitor and nested int
그렇다!!
P2IFG를 클리어 시킴은 GIE를 nesting에 대하여 enable로 설정한다는 것을 알 수 있다.
위에서 r5 는 범용 레지스터로 사용되며 0000h, 즉 0으로 클리어 되어 있다.
또한 EINT(Enable Interrupt)의 설정 내용은 아래와 같다.
/* Enable/Disable interrupts */
#define eint() __asm__ __volatile__("eint"::)
#define dint() __asm__ __volatile__("dint"::)
/* IAR compatibility functions */
#define _EINT() eint()
#define __enable_interrupt() eint()
#define _DINT() dint()
#define __disable_interrupt() dint()
마찬가지로 EINT가 있으니 DINT도 위와 같이 정의되어 있다.
오늘은 진실로 정리가 필요하구나.
P1/P2인터럽트 플래그와 관련하여 P2IFG 레지스터가 존재하는 데,
이레지스터의 셋팅값에 따라 인터럽트 pending여부를 설정할 수 있다.
Bit = 0 -> No interrupt is pending
Bit = 1 -> An interrupt is pending
GIE의 경우(r2 레지스터 셋팅 값)
Bit = 0 -> An interrupt is pending
Bit = 1 -> No interrupt is pending
으로 정의가 된다.
위의 내용으로 보아 P2IFG(Port Interrupt Flag)와 GIE(General Interrupt Enable)가 상반된 값을 이용하지만
결과적으로 동일한 설정을 하 게 됨을을 알 수 있다.
머릿속이 복잡해지지만 Texas Instruments는 이런 나의 이해를 돕기위하여 매뉴얼을 배포하고 있었다.
====== clear P2IFG reg and set GIE =======
MOV.B &P2IFG, r5 ; read int flag
BIC.B r5, &P2IFG ; clear int flag
EINT ; set GIE to enable Monitor and nested int
그렇다!!
P2IFG를 클리어 시킴은 GIE를 nesting에 대하여 enable로 설정한다는 것을 알 수 있다.
위에서 r5 는 범용 레지스터로 사용되며 0000h, 즉 0으로 클리어 되어 있다.
또한 EINT(Enable Interrupt)의 설정 내용은 아래와 같다.
/* Enable/Disable interrupts */
#define eint() __asm__ __volatile__("eint"::)
#define dint() __asm__ __volatile__("dint"::)
/* IAR compatibility functions */
#define _EINT() eint()
#define __enable_interrupt() eint()
#define _DINT() dint()
#define __disable_interrupt() dint()
마찬가지로 EINT가 있으니 DINT도 위와 같이 정의되어 있다.
728x90
반응형
댓글