色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用Arduino EEPROM在重啟后保存數(shù)據(jù)

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 10:38 ? 次閱讀

您知道Arduino在關(guān)閉時可以存儲數(shù)據(jù)嗎?草圖不存儲在閃存中。我說的是EEPROM中的可變數(shù)據(jù)。加入我的行列,向我展示如何讀寫它,以及它可以為您的項目做什么。

如果您不熟悉Arduino,請確保閱讀我們的初學(xué)者指南。

什么是EEPROM?

EEPROM代表電可擦可編程只讀存儲器。這是一種非易失性存儲器。如果您不了解任何含義,請不要擔(dān)心。即使沒有電源,它也可以簡單地存儲數(shù)據(jù)(與RAM不同,RAM需要電力才能保留任何數(shù)據(jù))。

EEPROM內(nèi)置于眾多處理器中,例如Matrix Creator Pi HAT中使用的現(xiàn)場可編程門陣列(FPGA)。所有的Arduino都有EEPROM,但容量因型號而異。請務(wù)必查看我們的購買指南以獲取有關(guān)每塊板的更多詳細信息

工作原理

使用 Fowler-Nordheim隧道對EEPROM進行電擦除和編程。您無需了解技術(shù)細節(jié)即可使用它。基本前提是用電來更改二進制數(shù)據(jù)(什么是二進制)。可以電子方式讀取,擦除和重寫。

幸運的是,Arduino語言可以輕松更改數(shù)據(jù),而無需任何計算機科學(xué)學(xué)位。

預(yù)期壽命

雖然在Arduino中易于使用EEPROM,但壽命確實有限。 EEPROM指定可處理100,000個讀/擦除周期。這意味著您可以在EEPROM變得不穩(wěn)定之前寫入并擦除/重寫數(shù)據(jù)100,000次。實際上,取決于每個處理器的容差,Atmel(Arduino“芯片”的制造商)半導(dǎo)體可以處理更多或更少的循環(huán)次數(shù)。

一旦某個位置被寫入并擦除了太多次,它就會開始變得不可靠。它可能無法返回正確的數(shù)據(jù),也可能無法返回相鄰位的值。

這聽起來像很多次寫入,但是如果以編程方式進行讀取和寫入(在《例如,strong》 loop )。讀取數(shù)據(jù)不會降低芯片質(zhì)量,僅寫入會。您可以無憂無慮地從EEPROM讀取數(shù)據(jù)!

請務(wù)必注意,此限制適用于每個內(nèi)存位置。您的Arduino在EEPROM中可能有1,000個或更多可用的存儲位置,因此,如果您對一個位置寫入太多次,則只會影響該位置,而不會影響其他位置。稍后,我將討論耗損均衡,它可以通過均勻分配數(shù)據(jù)來減少EEPROM的耗損-SSD可以利用這一點。

它有什么用?

EEPROM對于您的Arduino項目非常有用。由于即使斷電也能記住數(shù)據(jù),因此您可以存儲Arduino的狀態(tài)。也許您可以建造一個可以記住其位置或剩余多少“彈藥”的激光轉(zhuǎn)塔。您可以使用它來控制設(shè)備,并記錄設(shè)備被激活的次數(shù)。

EEPROM最適合諸如設(shè)置或高分的事情。如果要定期寫入復(fù)雜數(shù)據(jù),則可以考慮使用以太網(wǎng)屏蔽(具有內(nèi)置SD插槽)或Raspberry Pi。

讀寫

現(xiàn)在,理論已成為現(xiàn)實,讓我們看看如何讀寫一些數(shù)據(jù)!首先,包括庫(Arduino IDE隨附):

#include

現(xiàn)在寫入一些數(shù)據(jù):

EEPROM.write(0, 12);

這會將數(shù)字 12 寫到EEPROM位置 0 。每次寫入需要3.3毫秒( ms ,1000ms = 1秒)。請注意,您不能寫字母( char ),只允許從0到255的數(shù)字。這就是為什么EEPROM非常適合設(shè)置或高分,但不適用于播放器名稱或單詞的原因。可以使用這種方法存儲文本(您可以將字母表中的每個字母映射到一個數(shù)字),但是您將需要具有多個存儲位置-每個字母一個位置。

以下是您的閱讀方式該數(shù)據(jù):

EEPROM.read(0);

零是您之前寫入的地址。如果您以前沒有寫過地址,它將返回最大值( 255 )。

有一些更有用的方法可用。假設(shè)您想存儲小數(shù)位或字符串:

EEPROM.put(2,“12.67”);

這會將數(shù)據(jù)寫入多個位置,這很容易編寫,但仍然很方便。您仍需要跟蹤已寫入的位置數(shù),以免意外覆蓋數(shù)據(jù)!您必須使用 get 方法再次檢索此數(shù)據(jù):

float f = 0.00f;

EEPROM.get(2, f);

get中的值存儲在浮點型 f 變量。請注意,如何使用 0.00f 作為值進行初始化。 f 使編譯器知道您可能希望在此變量中存儲大量數(shù)字,因此它會在編譯過程中設(shè)置一些其他配置。

Arduino網(wǎng)站上的EEPROM文檔還有更多示例。

磨損平衡

磨損平衡是一種用于減少磨損并延長EEPROM壽命的技術(shù)。如果您僅在一個小型項目上工作,則不必擔(dān)心這一點。

保存EEPROM壽命的最簡單方法是限制您的寫入到特定位置。您可以通過先讀取地址來完成此操作,如果您要寫入的值已經(jīng)存在,則無需再次寫入(請記住,讀取數(shù)據(jù)無害)。操作方法如下:

int safeWrite(int data, address) {

if(EEPROM.read(address) != data) {

EEPROM.write(address, data);

}

}

這是相當(dāng)簡單的代碼,但是僅適用于整數(shù)!不用重新發(fā)明輪子,而是使用Arduino EEPROM庫中內(nèi)置的功能:

EEPROM.update(address, val);

此方法與 write 方法,盡管它可能會大大減少所需的寫入次數(shù)!

如果您需要寫入大量數(shù)據(jù),并且擔(dān)心芯片消耗wearing盡,則可以跟蹤進行多少次寫入,盡管這會使用更多數(shù)據(jù)。這是偽代碼的粗略實現(xiàn):

var address = 0

var writeCount = 0

if(writeCount 》 75,000)

writeCount = 0

address += 1

EEPROM.write(address, data)

您將需要將地址和writeCount存儲在EEPROM中(并且writeCount需要在地址位置之間劃分)。在大多數(shù)情況下,將不需要此級別的保護。 Arduino也是如此便宜,因此您可能會發(fā)現(xiàn)購買備份更容易!

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1022

    瀏覽量

    81661
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6471

    瀏覽量

    187243
收藏 人收藏

    評論

    相關(guān)推薦

    EEPROM嵌入式系統(tǒng)中的應(yīng)用 EEPROM數(shù)據(jù)保護技術(shù)解析

    于存儲設(shè)備的配置參數(shù),如網(wǎng)絡(luò)設(shè)置、用戶偏好設(shè)置等。這些參數(shù)系統(tǒng)重啟仍然需要保持不變,因此EEPROM提供了一個理想的存儲
    的頭像 發(fā)表于 12-16 16:37 ?691次閱讀

    ADS1293EVM保存數(shù)據(jù)時候,始終只能保存CH1的數(shù)據(jù),而其他chanel的數(shù)據(jù)卻無法保存到txt文件下,怎么解決?

    我購買了ADS1293EVM開發(fā)板,使用官方軟件時候,無論我怎樣設(shè)置,無論開啟了幾個通路,當(dāng)我點保存數(shù)據(jù)時候,始終只能保存CH1的
    發(fā)表于 11-29 06:38

    玩轉(zhuǎn)EEPROM——全面指南

    玩轉(zhuǎn)EEPROM——全面指南 EEPROM(電可擦除可編程只讀存儲器)是一種能夠斷電保存數(shù)據(jù)
    的頭像 發(fā)表于 07-01 09:36 ?2634次閱讀
    玩轉(zhuǎn)<b class='flag-5'>EEPROM</b>——全面指南

    EVASH Ultra EEPROM激光打印機中的應(yīng)用

    Read-Only Memory)是一種非易失性存儲器,具有以下關(guān)鍵優(yōu)勢: 數(shù)據(jù)持久性 :即使斷電的情況下,數(shù)據(jù)也能長期保存。 可擦寫性 :允
    的頭像 發(fā)表于 06-27 08:16 ?348次閱讀

    求助,esp-idf中使用arduino作為組件怎樣使用arduino的庫?

    esp-idf中使用arduino作為組件怎樣使用arduino的庫,例如我此時需要使用arduin
    發(fā)表于 06-12 07:21

    ESP32S3的EEPROM是由FLASH虛擬的,直接在arduinoIDE中擦寫EEPROM時是否底層自動進行了磨損平衡?

    ESP32S3的EEPROM是由FLASH虛擬的,請問直接在arduinoIDE中擦寫EEPROM時是否底層自動進行了磨損平衡? 在用ESP32S3做含有計數(shù)器功能的設(shè)備,希望可以掉電保存
    發(fā)表于 06-07 06:27

    如何給restful_server增加數(shù)據(jù)保存的功能?

    control: red = 50, green = 85, blue = 28。 但是esp32重啟修改的內(nèi)容又恢復(fù)到默認值了。 怎樣讓網(wǎng)頁打開自動顯示以前的設(shè)定值,而不是顯示
    發(fā)表于 06-06 06:52

    請問ESP32S3的OTA過程是否支持保存燒寫進度,掉電重啟從掉電前位置開始燒寫?

    請問ESP32S3的OTA過程是否支持保存燒寫進度,掉電重啟從掉電前位置開始燒寫? 例如OTA數(shù)據(jù)共需要20幀進行傳輸,傳輸了10幀數(shù)據(jù)
    發(fā)表于 06-05 08:10

    向stm8s105內(nèi)部eeprom寫入數(shù)據(jù),重新下載別的程序,這時候內(nèi)部eeprom里的數(shù)據(jù)會被擦除掉嗎?

    向stm8s105內(nèi)部eeprom寫入數(shù)據(jù),重新下載別的程序,這時候內(nèi)部eeprom里的數(shù)據(jù)
    發(fā)表于 05-16 06:33

    STM8s 003 EEPROM斷電保存eeprom數(shù)據(jù)被清零的原因?

    STM8s003EEPROM 斷電保存怎么回事,eeprom數(shù)據(jù)被清零 void EEPROM
    發(fā)表于 05-13 06:01

    FLASH、EEPROM的區(qū)別和擴展【硬件干貨】

    數(shù)據(jù)的長期保存和掉電保存等問題,因此外擴EEPROM就是這系統(tǒng)常見的模塊。外擴的EEPROM也可以用來存儲一些參數(shù),
    的頭像 發(fā)表于 02-27 08:37 ?2037次閱讀
    FLASH、<b class='flag-5'>EEPROM</b>的區(qū)別和擴展【硬件干貨】

    調(diào)試CYUSB3314時出現(xiàn)通過Blaster Plus更改PID,復(fù)位/重啟HUB數(shù)據(jù)未發(fā)生改變的原因?

    配置IIC主模式,調(diào)試CYUSB3314時出現(xiàn)通過Blaster Plus更改PID,復(fù)位/重啟HUB數(shù)據(jù)未發(fā)生改變的情況,已反復(fù)確
    發(fā)表于 02-27 07:50

    Cyusb3014如何將固件中的數(shù)據(jù)保存到Cyusb附帶的EEPROM中?

    你好,我正在為 Cyusb3014 開發(fā)固件。 我想將固件中的數(shù)據(jù)保存到 Cyusb 附帶的 EEPROM 中,然后將其插入主機,通過上層計算機從 EEPROM 讀取
    發(fā)表于 02-27 06:18

    雙應(yīng)用的bootloadable程序,EEPROM怎樣指向同一個地址?

    bootloadable程序中的EEPROM指向同一個地址,這樣boot升級,新的程序可以調(diào)用以前保存數(shù)據(jù),附件是我的bootloader和bootloadable工程
    發(fā)表于 02-06 08:28

    狹義EEPROM和廣義EEPROM有什么區(qū)別?

    這種ROM的特點是可以隨機訪問和修改任何一個字節(jié),可以往每個bit中寫入0或者1。這是最傳統(tǒng)的一種EEPROM,掉電數(shù)據(jù)不丟失,可以保存100年,可以擦寫100w次。
    發(fā)表于 01-09 09:38 ?433次閱讀
    主站蜘蛛池模板: gv手机在线观看| 受喷汁红肿抽搐磨NP双性| a色毛片免费视频| 亚洲高清国产品国语在线观看| 理论片午午伦夜理片I| 国产精品高清视亚洲一区二区 | 18禁在线无遮挡羞羞漫画| 吃春药后的女教师| 伊人22222| 午夜免费无码福利视频麻豆| 女人张开腿让男人添| 精品无码乱码AV| 国产免费午夜高清| 国产99RE在线观看69热| chinese国语露脸videos| 一品道门在线观看免费视频| 网址在线观看你懂我意思吧免费的| 欧美九十老太另类| 麻豆XXXX乱女少妇精品-百度| 国产亚洲精品免费视频| 富婆找黑人老外泻火在线播放| 99久久无码热高清精品| 偷尝禁果H1V1幸运的山熊| 欧美特级特黄a大片免费| 久久久久综合网久久| 成人免费看片45分钟| 97伦理97伦理2018最新| 在线色av| 在线观看免费av网站| 伊人狠狠丁香婷婷综合尤物| 亚洲国产高清福利视频| 亚洲 欧美 国产 综合 播放| 天堂色| 玩弄人妻少妇500系列网址| 三级黄在线| 十分钟免费观看大全视频| 色网址在线观看| 无套暴躁白丝秘书| 午夜理伦片免费| 亚洲成人综合在线| 亚洲裸舞 hd|