愛體驗認證

顯示具有 eeprom 標籤的文章。 顯示所有文章
顯示具有 eeprom 標籤的文章。 顯示所有文章

2019年5月4日 星期六

TCweng_讀寫外接EEPROM Arduino (AT24C256)

此篇是介紹Arduino外接EEPROM記憶體
AT24C256 EEPROM
繼上一篇讀取Arduino內部記憶體文章之後
https://tcweng.blogspot.com/2019/05/tcwengarduino-eeprom.html

要存取外部EEPROM記憶體
相對存取內部記憶體
程式就要麻煩了很多
內容包含了存取位置的相關問題
如要了解EEPROM請見
https://tcweng.blogspot.com/2019/05/eeprom.html

先解決接線的部分
VCC跟GND分別接上5V跟接地
如果是電是吃3.3的話就要接Arduino的3.3
SDA  >>  A4
SCL  >>  A5



程式的部分:

TCweng_讀寫Arduino EEPROM記憶體

繼上一篇:EEPROM 記憶體介紹https://tcweng.blogspot.com/2019/05/eeprom.html

TC就一直很想要介紹怎麼讀寫arduino的EEPROM了
因此隔天就馬上跑來寫這篇文章XD

這邊先提供外接EEPROM記憶體的教學連結
https://tcweng.blogspot.com/2019/05/tcwengeeprom-arduino-at24c256.html


先簡單介紹一下:

EEPROM在系統斷電後
資料依然能夠留存
因此如果利用EEPROM儲存檔案
可以省去外接EEPROM的麻煩
而且在下次開機時也可以繼續使用上次的資料

是不是有讀者想到這個可以用來幹嘛了😁😁😏
TC看到Arduino有這個功能後
想到的就是可以拿來儲存紀錄天氣
這樣就不用外接任何的SD卡等等裝置
而且穩定度上非常高!!!!!
用過SD模組的就知道
就算在怎麼想破頭腦
就是有那麼一點的不穩定



進入今天的正題:

要使用Arduino內建的記憶體
要先匯入<EEPROM.h>函示庫

#include <EEPROM.h>



而在setup()區域中
不需要寫任何的程式做設定
(除非有要先寫入某些數值進入記憶體)



底下是最重要的幾個指令:
addr=地址 . val=數值

寫入指令:
EEPROM.write(addr, val);

讀取指令:
EEPROM.read(addr);

清除指令
EEPROM.clear
!!!這個指令是清除全部記憶體





底下是兩個實作範例

寫入檔案範例:
#include <EEPROM.h>
int addr = 0;

void setup() {
  
}

void loop() {
  
  int val = analogRead(0) / 4;  // val=讀取類比0腳位的訊號
  EEPROM.write(addr, val);   //將數值val存入位置addr

  addr = addr + 1;  // 將位置加1,類似門牌號加一的意思
  if (addr == EEPROM.length()) {  //假設記憶體全部用完則從門牌號0開始

    addr = 0;
  }


  delay(100);
}





讀取檔案範例:
#include <EEPROM.h>

int address = 0;
byte value;

void setup() {
  Serial.begin(9600);

}

void loop() {

  value = EEPROM.read(address);

  Serial.print(address);
  Serial.print("\t");
  Serial.print(value, DEC);
  Serial.println();

  address = address + 1;
  if (address == EEPROM.length()) {
    address = 0;
  }

  delay(500);
}

TCweng_EEPROM 記憶體介紹

EEPROM

是很特別的記憶體
在記憶體外殼上
有一個透明的玻璃窗
這是用來讓紫外線照射的地方
只要用紫外線連續照射十分鐘左右
即可清除記憶體裡面的所有資料

在寫入和讀取方面
跟ROM唯獨記憶體一樣
都需要燒入器或特殊的裝置
地下這篇文章
教你用arduino讀寫入部記憶體
https://tcweng.blogspot.com/2019/05/tcwengarduino-eeprom.html

但不同的是
EEPROM一次只能清除一個byte的資料
快閃記憶體則是用區段的範圍清除資料

更多記憶體簡介請見
https://tcweng.blogspot.com/2019/05/tcwengardyinoatmega328.html?m=1

TCweng_ROM唯獨記憶體介紹

ROM 又稱隨機存取記憶體
全名為:Random Only Memory

特性:
普通狀態下只能讀取
但除了mask Rom之外
都可以用特殊的燒錄器寫入資料
但速度的效能上慢了很多

分類:
ROM可分為兩類
分別為

PROM:
可程式化記憶體
!只能燒錄一次!

EPROM:
可程式化以及抹去程式的記憶體
!可以重複燒錄!

Mask ROM:
不可修改任何資料

更多記憶體簡介請見
https://tcweng.blogspot.com/2019/05/tcwengardyinoatmega328.html?m=1

TCweng_RAM隨機存取記憶體介紹

RAM 又稱隨機存取記憶體
全名為:Random Access Memory

特性:
儲存在RAM中的資料
斷電後就會立刻消失
但另外有一個重點是
DROM就算在通電狀態中
在四分之一秒後資料也會消失

分類:
SRAM可分為兩類
分別為

SRAM:
是Arduino中使用的一種記憶體
他價格雖然相較之下較為昂貴
但存取速度上
擁有很好的性能
是DRAM的四倍速左右
且不需要持續的重複刷新

DRAM:
價格相對較低
但存取速度也較慢
且需要持續刷新
被一般的個人電腦所使用


更多記憶體簡介請見
https://tcweng.blogspot.com/2019/05/tcwengardyinoatmega328.html?m=1