본문 바로가기

교육/ATmega2560

ATmega2560 인터럽트의 정의와 PCINT연결

AVR ATmega1280/2560 정복 (130p~)


  • (1) 인터럽트 (interrupt)
  • ㄴ CPU 외부의 하드웨어적인 요구에 의해 정상적인 프로그램의 실행 순서를 변경하여 명령한 작업을 수행한 후에 다시 원래의 프로그램으로 복귀하는것 

  • 인터럽트 발생원인에 따른 분류
          ┌하드웨어 인터럽트 ┬ 내부 인터럽트
          │                            └ 외부 인터럽트
          └소프트웨어 인터럽트

  • 인터럽트 발생시 마이크로프로세서의 반응 방식에 따른 분류
          ┌차단 가능 인터럽트(INT : maskable interrupt)
          └차단 불가능 인터럽트(NMI : non-maskable interrupt)



차단 가능한 인터럽트를 마스크 인터럽트라 하는데 EIMSK같은 마스크가 존재하는 interrupt를 뜻한다.

차단이 불가능한 인터럽트를 논 마스크 인터럽트라 하는데 제일 대표적인 인터럽트가 Reset(백터 0번지)이다.

  • 요샌 차단불가능한 NMI 인터럽트를 잘 만들지 않음


초소형 CPU를 DMA(Direct Memory Access)컨트롤러라고 함.
  • ex) 창고에서 연탄을 다른 곳으로 옮길때엔 사람이 직접 들어 이동하여 옮겨야하지만, 창고에 초소형 CPU가 장착되어있으면 사람이 이동하지 않고 창고에 다른 곳으로 옮기라 명령만 내려도 된다. (로봇과 같이 되었
  • 기 때문에 명령만 제대로 내리면 됨)


인터럽트의 처리 과정
인터럽트 요청 신호검출 인터럽트 우선순위 제어 / 허용 여부 판단 인터럽트 처리루틴 시작 번지 확인 복귀주소 / 레지스터 저장 인터럽트 서비스 루틴(ISR) 실행 인터럽트 서비스 루틴 종료 / 주프로그램으로 복귀





ATmega2560의 PCINT를 쓸건데 PORTJ PIN을 사용할 것이다.
PORTJ의 사용 PCINT는 PJ0 (RXD3/PCINT9) PCINT의 9~ 사용함 그렇기 때문에 PCINT2벡터를 사용한다.




PCINT0~7 - PCINT0 사용 (PCINT안에는 8개씩 할당 되어있기 때문, 그 8개 중 아무거나 신호를 보내도 PCINT0벡터를 호출한다.)
PCINT8~15 - PCINT1 사용
PCINT16~23 - PCINT2 사용


Vectors Table






~~~~수업~~~~




ATmega2560 인터럽트로 7 Segment의 값 증가 / 감소 시키기



요렇게 생긴 7 Segment를 받았당!







(생략생략..)


-소스-