DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원 2009.04.08
DK-128 메인보드 – 연산, 제어 확장보드 - 입출력 Serial port Parallel port FND LED high low FND low high LED low high EEPROM & Sensor Tact Switch Atmega 4K EEPROM EEPROM 400KHz,16k Power 1:TWI clock, 2:TWI data, 상위5~8:Infrared sensor
DK-128의 결선 8 line j19 - red j15 + black 61 1 1 j18 25 j16 54 - 35 42 +
LED OUT ATMEGA128 Key IN ADC=아날로그신호입력 Port A : I/O, 상위어드레스(ALE의한제어) 아날로그전원 프로그램 쓰기 LED OUT 전원 Port E : I/O, 외부인터럽트, ISP 프로그래밍 데이터/주소 모드 ATMEGA128 Key IN 전원 Port B : I/O, 타이머, 카운터, PWM, SPI 외부데이터메모리 접근 모드 Oscillator Port D : I/O, TWI, UART직렬통신 Real time clock시 Oscillator
1. EECR (Control Register) EERE (Read Enable) EEAR에 지정된 주소의 1바이트를 읽어 EEDR에 저장 EEWE (Write Enable) 쓰기 기능 동작, 시스템에 의한 클리어, EEMWE (Master Write Enable) EEWE 동작 전 1 지정해야 함, 시스템에 의한 클리어 EERIE (Ready Interrupt Enable) EEWE가 클리어 될 때 인터럽트 발생 여부 SREG I 비트도 활성화 되어 있어야 함. 비트 7 6 5 4 3 2 1 EECR - EERIE EEMWE EEWE EERE 모드 R R/W 초기값 X
2. EEAR (Address Register) 16비트 레지스터(12비트 사용) 비트 7 6 5 4 3 2 1 EEARH - EEAR11 EEAR10 EEAR9 EEAR8 모드 R R/W EEARL EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 초기값 12비트 = 4,096개 번지 관리 가능 Ex) EEAR = (unsigned int)0~4095
3. EEDR (Data Register) 읽거나 쓰기 위한 데이터를 저장하는 레지스터 비트 7 6 5 4 3 2 1 EEDR MSB LSB 모드 R/W 초기값 Ex) EEDR = (unsigned char)0~255
한 바이트 쓰기/읽기 절차 쓰기 시작 읽기 시작 쓰기 중인가? 쓰기 중인가? 쓸 주소 설정 읽을 주소 설정 쓸 데이터 설정 참 참 쓰기 중인가? 쓰기 중인가? 거짓 거짓 쓸 주소 설정 읽을 주소 설정 쓸 데이터 설정 읽기 명령 쓰기 명령 데이터 읽기 쓰기 종료 읽기 종료
AVR-GCC의 EEPROM 함수 헤더파일 주요 함수 주의 사항 avr/eeprom.h 프로그램 메모리의 펌웨어를 다시 쓰면, 기능 eeprom_is_ready() EECR 레지스터에서 EEWE 비트가 Clear 될 때까지 대기 eeprom_write_byte(addr, val) 해당 주소에 바이트 단위 쓰기 eeprom_read_byte(addr) 해당 주소에서 바이트 단위 읽기
실습 예제 1/3
실습 예제 2/3
실습 예제 3/3
실습 문제 [요구사항] LED와 KEY를 사용한다. 각 LED는 이웃한 각 KEY버튼과 짝이 된다. 현재의 상태를 매번 EEPROM에 기억 시킨다. DK-128의 전원을 껐다가 켰을 때, 이전의 LED 상태를 그대로 표시해야 한다.