2010年12月26日 星期日

Arduino 筆記 – EEPROM Library 使用簡介

EEPROM 簡介

EEPROM(Electrically Erasable Programmable ROM) 是既可讀又可寫的一塊特殊的記憶體,它跟 RAM 不一樣,它的內容是永久保存的,寫入的資料,即使在電源關閉之後還是保存在 EEPROM 裏,下次電源重開的時候仍然可以把它讀出拿來使用。

EEPROM 通常用來保存程式的設定值。舉個例子,如果你設計了一個電子鎖或警報器,讓使用者可以設定與輸入密碼會是個好點子,不過如果每次關閉電源後密碼就不見,那可就不好玩了,理想的解決辦法是使用 EEPROM 把密碼保存起來。

Arduino EEPROM Library

Arduino 板子上的微控制器都內建了 EEPROM,Arduino 提供了 EEPROM Library 讓讀寫 EEPROM 這件事變得很簡單。EEPROM Library 只有兩個函式,簡單說明如下:

  • EEPROM.read(address) - 讀取 address 這個位址的內容 (一次一個 byte)。
  • EEPROM.write(address, value) –address 是要寫入的位址,value 是要寫入的資料 (一次一個 byte,值域為 0 到 255)

使用 EEPROM Library  的時候,程式必須引入 EEPROM.h:

要注意 EEPROM 有寫入次數的限制,ATmega 系列微控制器的 EEPROM 其每一個位置大約只能寫入 10 萬次,在使用的時候,最好盡量公平對待 EEPROM 的每一塊空間,不要對某塊空間偏心特別鍾愛,因為如果你頻繁地使用固定的一塊空間,那麼該塊空間可能很快就壽終正寢了。

另外,也要注意所用的是哪一張 Arduino 板子,因為不同版本的 Arduino 板子其微控制器的 EEPROM 容量是不一樣的: ATmega328 是 1024 bytes, ATmega168 和 ATmega8 是 512 bytes,而 ATmega1280 和 ATmega2560 是 4KB (4096 bytes)。

EEPROM 讀寫範例

底下是一個讀寫 EEPROM 的簡單的範例,程式的邏輯是在 EEPROM 位址 5 的地方寫入數值 99,接著再從 EEPROM 讀出剛剛寫入的內容,並且輸出到 Serial Port:

延伸閱讀

0 意見: