우리가 안썼던 인터럽트를 사용할 것이다.
INT 5번과 INT 4번을 사용하여 인터럽트를 줄거기 때문에 PE5(7번),PE4(6번)에 푸쉬버튼을 연결하면됨
INT5/4번을 INit해주고 이전값을 보존하기 위해서 EICRB = EICRB | 이렇게 or을 걸어준다.
- 처음에 EICRB 를 or걸어주지 않고 사용했는데 무한루프에 빠져서 인터럽트를 빠져나오지 못했당 ㅠㅠ
백터테이블을 보고 백터를 걸어주고 백터는 smart.c에서 선언하여 사용한다.
주석을 확인하구 이렇게 소스를 완성시켜 AVR을 컴파일시켜주면
푸쉬버튼을 눌렀을 때 char LCD에 001~060까지 증가 or 감소가 되어 찍힌다!
최솟값이 1이기 때문에 001에서 감소버튼을 한번 더 눌러도 001이 나왔다.
EEPROM
AVR의 왼쪽 굵은선(BUS)를 통해 위로가면 EEPROM이 보임. ( BUS로 연결 됨)
-> FLASH와 SRAM은 AVR과 붙어있다. (BUS로 연결된게 아님)
EEPROM메모리는 장치가 따로 떨어져 있는 메모리다.
CPU(AVR)에 직접 붙은게 아니고 장치처럼 움직인다. 그렇기 때문에 포인터로 가르킬 수 없다.
BUS를 통하여 연결하여야 한다. FLASH와 SRAM과는 다른 방식의 메모리..
- 주소로 접근할 수 없고 장치이기 때문에 레지스터로 접근하여야 한다.
- 포인터로 주소를 가리킬 수 없다.
- 반대로 flash와 sram은 AVR에 있는 메모리이기 때문에 포인터로 주소를 가리킬 수 있다.
- ↓소스코드
'교육 > ATmega2560' 카테고리의 다른 글
아트메가2560..... (0) | 2014.06.09 |
---|---|
ATmega2560 풀업다운등.. (0) | 2014.06.03 |
7 Segment / 인터럽트를 이용하여 숫자 증감하기 (0) | 2014.05.29 |
ATmega2560 인터럽트의 정의와 PCINT연결 (0) | 2014.05.28 |
ATmega2560 TimerCounter와 인터럽트 이용하여 7 Segment증가시키기 (0) | 2014.05.27 |