AVR Internal EEPROM
EEPROM์ ์ ๊ธฐ์ ์ ํธ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ ์ ์ฅํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค. ATmega328p์ ๊ฒฝ์ฐ 1 KB ์ฌ์ด์ฆ์ EEPROM์ ๋ด์ฅํ๊ณ ์์ต๋๋ค. ๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ์ด๋ฏ๋ก ์ ์์ด ์ธ๊ฐ๋์ง ์์๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ตํ๊ณ ์์ต๋๋ค. ์ค์ ์ ์ํด ๊ธฐ์ตํ๊ณ ์์ด์ผ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฃผ๋ก ์ฐ์ ๋๋ค.
It is organized as a separate data space, in which single bytes can be read and written. The EEPROM has an endurance of at least 100,000 write/erase cycles
์ฐ๊ธฐ์ ๊ฒฝ์ฐ 100,000 ๋ฒ์ผ๋ก ํ์๊ฐ ์ ํ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋, ์ง์ฐ๊ณ ์ ์ฅํ๋ ๊ฒ(write) ๋ณด๋ค ์ ์ฅ๋ ๊ฐ์ ํ์ธํ๊ณ ํ์ธ๋ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ง ์ง์ฐ๊ณ ์ ์ฅํ๋ ๊ฒ(update)์ ๊ถ์ฅํฉ๋๋ค.
#
<avr/eeprom.h>#
read/updateinfo
AVR์ Little Endian์ ๊ธฐ๋ณธ์ผ๋ก ํฉ๋๋ค. eeprom_update_word((uint16_t *)0, (uint16_t)0x1234)
๋ฅผ ์ฌ์ฉํ์ฌ 0 ๋ฒ ์ฃผ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒฝ์ฐ, 0x34 ๊ฐ 0 ๋ฒ ์ฃผ์์, 0x12 ๊ฐ 1 ๋ฒ ์ฃผ์์ ์ ์ฅ๋ฉ๋๋ค.
#
EEMEM์ฃผ์๋ฅผ ์ง์ ์ค์ ํด๊ฐ๋ฉฐ EEPROM์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์ ์ดํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ๊ธฐ์ตํ๊ธฐ ์ด๋ ต๊ณ , ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋๋ค. ๊ฐ๋ ์ฑ์ ์ํด EEMEM์ ์ฌ์ฉํ๋ฉด ์ข์ต๋๋ค.
caution
ํด๋น ๋ณ์๋ ์ ์ญ๋ณ์๋ ์ง์ญ๋ณ์์ฒ๋ผ ์ ์ฅ๋๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์, ์ ์ญ๋ณ์๋ ์ง์ญ๋ณ์์ฒ๋ผ ์ฌ์ฉํ๋ฉด ์๋ฉ๋๋ค.