|

如何操控Arduino內建的EEPROM?

   
 

一般而言,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。 典型I2C介面的EEPROM,編號24LC256,內有256kbits的儲存容量,換算成Byte則為32KB。

 

 

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *