BASIC4MCU | 질문게시판 | atmega128 인터럽터에 관하여
페이지 정보
작성자 00101 작성일2022-12-19 16:47 조회2,245회 댓글2건본문
안녕하세요 최근에 공부를 시작한 초보입니다...
공부하면서 이해가 잘 안 가는 부분이 있습니다.
외부 인터럽터와, 내부 인터럽터, 타임 인터럽터에 관하여 잘 모르겠습니다...
어떨 때 사용하는지,
사용하는 이유 등등,,, 인터럽터에 대한 개념이 제대로 자리잡지 못해서
위에 대한 내용을 알고 싶습니다.
제가 알기로는 상태 변경이 일어났을 때, 그 상태 변경을 처리가 우선순위로 해주는 것으로 알고 있는데, 그냥 폴링에 넣으면 안되는지 궁금합니다...
댓글 2
조회수 2,245master님의 댓글
master 작성일
내부 인터럽트라는 용어는 생소합니다.
//
PORTA=1; delay_ms(500); PORTA=0; delay_ms(500);
메인 무한루프에서 LED를 점멸 시키고 있다고 가정 해보죠
엔코더 모터를 동시에 구동 시켜서 엔코더 값을 읽어서 모터RPM을 측정 해야 할 때
딜레이 500ms 동안에는 엔코더를 체크하지 못하므로 엔코더 값을 놓치게 됩니다.
또 동시에 UART 비동기 통신도 수행 한다고 하면
9600bps 보레이트를 가진다면 1바이트당 약 1ms인데
딜레이 500ms라면 다 놓치고 마지막 수신값 밖에 읽지 못하게 됩니다.
메인의 LED 점멸과 상관없이
엔코더 값을 놓치지 않고 수신하며, UART 수신도 놓치지 않고 수행 하려면
외부 인터럽트로 엔코더를 입력받고
UART 수신 인터럽트를 사용하면 됩니다.
master님의 댓글
master 작성일
메인함수에서도 처리 해야 할 여러가지 내용들이 많은데
500ms 딜레이가 두개나 들어가 있는 LED 점멸 때문에 다른 처리를 하는데 시간적인 제약이 따른다면
타이머 인터럽트를 500ms 주기로 설정해서 LED 점멸을 타이머 인터럽트에서 실행해도 됩니다.
타이머 인터럽트 때문에 딜레이 1000ms(500ms 두개)가 없어져서 시간적으로 여유가 많이 생기게 됩니다.