70일차
-------------------------
ATMega2560 PCINT
-------------------------
--- Start Interrupt
어제 7 Segment에 숫자가 멈추는 것까지 하였고
이번엔 숫자가 다시 시작하는 것을 구현합니다.
--- Interrupt의 처리 방식
Interrupt 처리 방식에는 2가지가 있습니다.
첫번째는
인터럽트가 발생할 때 인터럽트를 요청한 장치가
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
벡터 함수 추가
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
PCINT 9~13번을 이용한 7Segment 카운터 (0) | 2014.06.02 |
---|---|
2014.05.30 업무보고 오영주 (출석번호 18번) (13) | 2014.05.30 |
2014.05.29 교육보고 - 17번 오두환 (13) | 2014.05.29 |
ATmega 2560 7SEGMENT TIMER (0) | 2014.05.29 |
PCIR1 인터럽트 (0) | 2014.05.28 |
Two Digits Led Seven segment display 18pin (0) | 2014.05.28 |
1405227 15번 송근영 업무일지 (13) | 2014.05.27 |
20140526 손병규 내용정리 (출석번호 14번) (10) | 2014.05.26 |