-
20140528 (PCINT)부산IT학원/스마트컨트롤러 2014. 5. 28. 10:04
70일차
-------------------------
ATMega2560 PCINT
-------------------------
--- Start Interrupt
어제 7 Segment에 숫자가 멈추는 것까지 하였고
이번엔 숫자가 다시 시작하는 것을 구현합니다.
- 확인
--- Interrupt의 처리 방식
Interrupt 처리 방식에는 2가지가 있습니다.
첫번째는
인터럽트가 발생할 때 인터럽트를 요청한 장치가
CPU에게 인터럽트 벡터를 전송하는 방식.
두번째는
주번 장치가 별개의 인터럽트 신호선이 있어 인터럽트 발생시CPU는 각각의 인터럽트에 따라 정의된 벡터 루틴을 찾아가는 방식.두번째는 Reset, external, .. 등등 인터럽트들 이고,
첫번째는 PIN CHANGE INTERRUPT 라고 이번에 배울 인터럽트 입니다.
--- Pin change Interrupt
말 그대로 pin에 값이 변했을 때 인터럽트를 발생시킵니다.
전에 배운 external interrupt는 low 일 때, low → high 일 때, high → low 일 때, 값이 변했을 때
총 4가지 동작 설정을 할 수 있었지만 PCINT는 값이 변했을 때 인터럽트가 발생하는 것 밖에 없습니다.
PCINT0 ~ PCINT23 번까지 총 24개 있습니다.
- 벡터 테이블
PCINT0 가 0 ~ 7 PIN Interrupt 발생시 호출.
PCINT1 가 8 ~ 15 PIN Interrupt 발생시 호출.
PCINT2 가 16 ~ 23 PIN Interrupt 발생시 호출.
- PCINT 관련 Reg
PCIE0 에 1이 되면 0 ~ 7 PIN Interrupt 발생하도록 설정.
PCIE1 에 1이 되면 8 ~ 15 PIN Interrupt 발생하도록 설정.
PCIE2 에 1이 되면 16 ~ 23 PIN Interrupt 발생하도록 설정.
0 ~ 7 PIN Interrupt 발생되면 PCIE0 에 1.
8 ~ 15 PIN Interrupt 발생되면 PCIE1 에 1.
16 ~ 23 PIN Interrupt 발생되면 PCIE2 에 1이 됩니다.
0 ~ 23번 까지 각각 인터럽트를 발생시킬지 안시킬지 설정하는 Reg 입니다.
--- 실습
사용할 인터럽트는 9번을 사용해 보기로 했습니다.
Pin 번호는 회로도를 참고하여 63번.
- int.h 에서
PCINT 관련 Reg 추가
- int.c 에서
초기화
- smart.h
PCINT9가 PORTJ 라서 PORTJ 관련 Reg 추가
- smart.c
벡터 함수 추가
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140530 (EEPROM) (0) 2014.05.30 20140529 (0) 2014.05.30 20140527 (timer, counter) (0) 2014.05.27 20140526 (7 Segment) (0) 2014.05.26 20140523 (USart, Interrupt) (0) 2014.05.23