인터럽트 중첩의 위험성
1. 재귀호출은 익숙하지 않다면 메모리 오류 혹은 디버깅을 하기 어려운 구조다. ISR에서 또 다른 ISR을 호출한다면 더군다나 작은 메모리의 스택 영역은 넘칠 위험이 있다 2. 8비트 마이크로컨트롤러인 ATmega128은 일반적인 int 데이터인 16비트 데이터를 처리할 땐 최소 2클럭이 필요하다. 즉 상위, 하위바이트 2번을 처리해야 한다. 하지만 상위 바이트를 처리하고 나서 다른 ISR에 호출되고, 호출된 ISR에서도 똑같은 value를 처리한다면 다시 복귀된 ISR에서는 다른 value 값으로 변경되는 의도치않은 상황이 나올 수 있다. ATmega128은 이를 위해 중첩 인터럽트를 사전에 차단하고 있다. ISR을 실행하기 이전에 전역 인터럽트 활성비트(SREG 레지스터의 I비트)를 자동으로 클리어..
2019. 5. 10. 18:14