愛體驗認證

顯示具有 資料 標籤的文章。 顯示所有文章
顯示具有 資料 標籤的文章。 顯示所有文章

2019年5月4日 星期六

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_RAM隨機存取記憶體介紹

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

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

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

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

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


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


TCweng_認識Ardyino控制器ATmega328 快閃記憶體 資料記憶體 程式記憶體

電腦的處理器我們成為CPU
他負責大部分的運算和程式的執行

但Arduino的微處理器
不單單只有CPU的功能
還包含
內建記憶體
數位轉換器
類比轉換器
甚至周邊的控制器都包含在裡面
因此他算是一個功能蠻強大的微電腦


底下是介紹記憶體的部分
ATmega裡包含了3種記憶體
分別為快閃、程式以及資料記憶體


至於三種記憶體的功能就大不相同了

快閃記憶體Flash的部分:
非揮發性記憶體
也就是說儲存在裡頭的程式不會自動消失
因此功能就是儲存開機的程式
以及我們編譯傳輸進Arduino的程式

資料記憶體SRAM:
為揮發性的記憶體
斷電後裡面的資料即會自動消失
專門暫時存放程式運作時所需的資料
更詳細記憶體資料請見:
https://tcweng.blogspot.com/2019/05/ram.html?m=1

EEPROOM:
非揮發性的記憶體
專門存放永久性的資料
可用程式把資料儲存在裡面喔!
更詳細記憶體資訊請見:
https://tcweng.blogspot.com/2019/05/eeprom.html?m=1


另外一提
Arduino執行程式的地方
是在CPU的地方
同時有一個暫存資料的暫存器來儲存資料

ROM唯獨記憶體介紹
https://tcweng.blogspot.com/2019/05/rom.html?m=1