불회발성 데이터 메모리인 내부EEPROM은 4KB가 내장되어 있다. 여기에는 플래시 메모리보다 더 많은, 동일한 어드레스에 100,000번까지 반복적으로 데이터를 쓰고 지울수 있다.즉, 동일한 메모리 주소를 반복해서 사용하지 않도록 주의해야 한다. 이것은 다른 메모리 어드레스와 별개로 0x0000 ~ 0x0FFF 번지에 할당되어 있다.
◆ EEPROM 인터럽트 벡터
Vector NO.
Program Address
Source
Interrupt Definition
23
0x002C
#pragma vector = EE_RDY_vect
EEPROM Ready
◆ EEPROM 레지스터
EEAR(EEPROM Address Register EEARH : EEARL) : EEPROM 어드레스 레지스터 이 레지스터는 12비트로 표현이 가능하다.
7
6
5
4
3
2
1
0
-
-
-
-
EEAR11
EEAR10
EEAR9
EEAR8
EEAR7
EEAR6
EEAR5
EEAR4
EEAR3
EEAR2
EEAR1
EEAR0
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
- EEAR11 ~ 0(EEPROM Address)
EEDR(EEPROM Data Register) : EEPROM 데이터 레지스터 이 레지스터는 데이터를 보관하는 기능을 수행한다.
7
6
5
4
3
2
1
0
MSB
LSB
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
- EEDR7 ~ 0(EEPROM Data)
EECR(EEPROM Control Register) : EEPROM 제어 레지스터 이 레지스터는 하위 4비트만 유효하다.
7
6
5
4
3
2
1
0
-
-
-
-
EERIE
EEMWE
EEWE
EERE
R
R
R
R
R/W
R/W
R/W
R/W
- EERIE(EEPROM Ready Interrupt Enable) 이 비트는 1로 설정되면 EEWE 비트가 클리어 될때 EEPROM Ready 인터럽트를 발생하는 기능을 가진다.
- EEMWE(EEPROM Master Write Enable) 이 비트는 EEWE = 1로 설정 할때 EEPROM 에 라이트가 가능하도록 허용할지 여부를 결정하는 기능을 가진다. 이 비트를 1로 설정하면 EEWE = 1로 되고 나서 4클럭 사이클 이내에 해당 데이터를 지정된 EEPROM 번지에 라이트 한다.
- EEWE(EEPROM Write Enable) 이 비트는 EEPROM 에 데이터를 라이트하기 위한 스트로브 신호를 준다.
EEPROM 라이트 동작 요약
① 앞의 라이트 동작이 완료되어 EEWE = 0 으로 될 때까지 기다린다. ② SPMCSR 레지스터에서 SPMEN = 0 으로 될 때까지 기다린다. ③ 새로 라이트할 EEPROM 어드레스를 EEAR 레지스터에 저장한다. ④ 새로 라이트할 EEPROM 데이터를 EEDR 레지스터에 저장한다. ⑤ EECR 레지스터에 EEMWE = 1, EEWE = 0 으로 설정한다. ⑥ 4사이클 이내에 EEWE = 1 로 설정한다.
인터럽트 발생되면 실패하게 되어 이를 방지하려면 ③ ~ ⑥ 의 과정을 수행하는 동안에는 상태 레지스터(SREG) I = 0 으로 설정하여 인터럽트 발생을 금지시킨다.
- EERE(EEPROM Read Enable) 이 비트는 EEPROM 에 데이터를 리드하기 위한 스트로브 신호를 준다.
EEPROM 리드 동작 요약
① 앞의 라이트 동작이 완료되어 EEWE = 0 으로 될 때까지 기다린다. ② 리드할 EEPROM 어드레스를 EEAR 레지스터에 저장한다. ③ EECR 레지스터에 EERE = 1 로 설정한다. ④ EEPROM 데이터를 EEDR 레지스터로 부터