一般而言,Arduino系統板上的AVR微控制器晶片,會內建512Bytes(512B)容量的EEPROM記憶體,可供程式開發者自由運用。EEPROM是很普及的晶片,許多晶片商均有供貨,如Atmel、MAXIM、Microchip、NXP、Holtek、Nuvoton等。
EEPROM的特性是系統斷電後,資料依然能夠留存,有了這個內建的EEPROM,可以省去外接EEPROM或DIP Switch(中文稱為指撥開關)的麻煩。
想使用Arduino內建的EEPROM,在程式最初就要含括進來,即使用以下指令:
#include <EEPROM.h>
而在Arduino的初始執行階段,即setup()函式內,不需要下任何指令,而後直接在迴圈執行階段進行操作,即loop()函式內。
EEPROM的操作指令相當簡單,只有2個,即是寫入、讀取,格式如下:
寫入指令:
EEPROM.write(addr, val);
讀取指令:
EEPROM.read(addr);
其中addr就是address位址,val就是value數值,addr與val可以給直接數值,也可以用變數替代。
另外有一個EEPROM.clear指令,但說穿了,就是用程式寫迴圈,將每個位址的資料都寫入數值0,若要使用EEPROM.clear,就得在setup()函式內放入以下程式:
for(int i = 0; i < 512; i++)
EEPROM.write(i, 0);
EEPROM的操作很簡單,但要附帶說明兩點,一是更高階的AVR微控制器晶片應有更高容量的EEPROM,如此迴圈最大數值就不能設512,而要改成1024等。另也有人把Arduino程式強行燒錄到更少硬體資源的ATtiny系列晶片內,那可能就沒有512bytes可以用,容量可能降至256/128/64Bytes,如ATtiny48/88僅有64Bytes,甚至完全沒有,如ATtiny20、ATtiny40等。
若真的MCU內建的都不夠用,那就只好外接(大陸稱外設),外接為了減少接腳(大陸稱引腳)數的使用,一般都用串列介面來連接,但串列介面又有很多種,如MicroWire(TI/NS公司提出)、1-Wire(MAXIM/Dallas Semiconductor公司提出)、UNI/O(Microchip公司提出)、SPI(Motorola/Freescale公司提出)、I2C(NXP/Philips Semiconductor公司提出)等,AVR微控器本身也內建SPI、I2C等串列介面,有關SPI、I2C介面的操作,待以後有機會再說明。
典型I2C介面的EEPROM,編號24LC256,內有256kbits的儲存容量,換算成Byte則為32KB。
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏