找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7960|回復(fù): 28
收起左側(cè)

電子設(shè)備怎么在掉電瞬間把數(shù)據(jù)保存在eeprom

  [復(fù)制鏈接]
ID:934353 發(fā)表于 2021-8-6 16:59 | 顯示全部樓層 |閱讀模式
有沒有大佬知道怎么在掉電瞬間把數(shù)據(jù)保存在eeprom里啊,求代碼思路
回復(fù)

使用道具 舉報

ID:328014 發(fā)表于 2021-8-6 17:15 | 顯示全部樓層
可以用一個超級電容或者小電池來在斷電的時候保存數(shù)據(jù),當(dāng)然需要一個斷電檢測的電路
回復(fù)

使用道具 舉報

ID:934353 發(fā)表于 2021-8-6 17:31 | 顯示全部樓層
51hei團團 發(fā)表于 2021-8-6 17:15
可以用一個超級電容或者小電池來在斷電的時候保存數(shù)據(jù),當(dāng)然需要一個斷電檢測的電路

是的,我查過,但是不知道怎么樣去檢測比較合理,大佬有什么比較好的方法嗎?感謝回答
回復(fù)

使用道具 舉報

ID:88256 發(fā)表于 2021-8-6 17:45 | 顯示全部樓層
開心就好hhhh 發(fā)表于 2021-8-6 17:31
是的,我查過,但是不知道怎么樣去檢測比較合理,大佬有什么比較好的方法嗎?感謝回答

取前面的電源用合適的電阻分壓,用單片機的一個I/O檢測,當(dāng)電壓低于一定程度時就不屬于高電平范圍了,可以判斷斷電了,執(zhí)行保存數(shù)據(jù)的操作
回復(fù)

使用道具 舉報

ID:161164 發(fā)表于 2021-8-6 17:55 | 顯示全部樓層
一定要掉電瞬間才寫入嗎?
換個思路,當(dāng)檢測到數(shù)據(jù)數(shù)值有變化就寫入
就不用理它掉不掉電了
回復(fù)

使用道具 舉報

ID:401564 發(fā)表于 2021-8-6 18:15 | 顯示全部樓層
瞬間寫入是不可能的
肯定是要有一個掉電檢測和電容來保持單片機完成寫入的時間
如果單片機對電源要求不高,又沒有ADC或者是ADC有穩(wěn)定的參考電壓的話,串聯(lián)一個二極管給單片機供電,然后在輸入端用兩個電阻來取樣就可以
實際的參數(shù)是要的實際電路中調(diào)節(jié)的
回復(fù)

使用道具 舉報

ID:584195 發(fā)表于 2021-8-6 19:13 | 顯示全部樓層
好象有個掉電中斷什么的,在這個中斷函數(shù)里寫就可以了吧.
回復(fù)

使用道具 舉報

ID:959221 發(fā)表于 2021-8-6 19:27 | 顯示全部樓層
不要用電容,不可靠.
知道UPS吧,就是在你的電路板上做個UPS,存完數(shù)據(jù)后,斷掉UPS.有電的時候就給UPS充電
還是鎳氫電池抗造,不鼓包,備電首選.
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-8-6 22:16 | 顯示全部樓層
做個電壓檢測電路,放在穩(wěn)壓器之前,電壓掉到一定程度提醒單片機保存數(shù)據(jù)。
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2021-8-7 06:07 | 顯示全部樓層
樓主的問題不是純軟件可以解決的,需要配置少量硬件。單片機完成任何工作都需要有電源支持和足夠的時間。一般把數(shù)據(jù)保存在eeprom需要幾十ms時間。也就是說外部電源掉電后,直接為單片機供電的電源還得要保持供電幾十ms時間,以維持單片機把數(shù)據(jù)保存在eeprom中。電路基本原理示意圖: 無標(biāo)題.jpg

回復(fù)

使用道具 舉報

ID:584195 發(fā)表于 2021-8-7 07:55 | 顯示全部樓層
單片機有bat接口的,用大電容給這個接口供電,加上10#的電路,應(yīng)該可以完美解決你的問題.
回復(fù)

使用道具 舉報

ID:420836 發(fā)表于 2021-8-7 10:01 | 顯示全部樓層
第一種選擇是寫入新數(shù)據(jù),以一定的間隔覆蓋掉eeprom中的舊數(shù)據(jù),或者在電源輸出端使用一個大的電解電容,為掉電提供延遲,以便將數(shù)據(jù)寫入EEPROM。
回復(fù)

使用道具 舉報

ID:934353 發(fā)表于 2021-8-9 09:36 | 顯示全部樓層
wulin 發(fā)表于 2021-8-7 06:07
樓主的問題不是純軟件可以解決的,需要配置少量硬件。單片機完成任何工作都需要有電源支持和足夠的時間。一 ...

好的,謝謝
回復(fù)

使用道具 舉報

ID:934353 發(fā)表于 2021-8-9 09:38 | 顯示全部樓層
lkc8210 發(fā)表于 2021-8-6 17:55
一定要掉電瞬間才寫入嗎?
換個思路,當(dāng)檢測到數(shù)據(jù)數(shù)值有變化就寫入
就不用理它掉不掉電了

這樣有可能還未掉電就已經(jīng)頻繁的寫入了,eeprom使用壽命就很短了,感謝回答
回復(fù)

使用道具 舉報

ID:934353 發(fā)表于 2021-8-9 09:38 | 顯示全部樓層
Y_G_G 發(fā)表于 2021-8-6 18:15
瞬間寫入是不可能的
肯定是要有一個掉電檢測和電容來保持單片機完成寫入的時間
如果單片機對電源要求不高 ...

好的,感謝回答
回復(fù)

使用道具 舉報

ID:934353 發(fā)表于 2021-8-9 09:39 | 顯示全部樓層
TTQ001 發(fā)表于 2021-8-7 10:01
第一種選擇是寫入新數(shù)據(jù),以一定的間隔覆蓋掉eeprom中的舊數(shù)據(jù),或者在電源輸出端使用一個大的電解電容,為 ...

好的,感謝回答
回復(fù)

使用道具 舉報

ID:451718 發(fā)表于 2021-8-9 13:43 | 顯示全部樓層
掉電保存有三種辦法實現(xiàn):
1,及時存儲(當(dāng)數(shù)值發(fā)生重大變化時)或者檢測時間間隔存儲(比如5分鐘保存一次)。
2,掉電檢測存儲,就是你提問的方式,需要去檢測供電電壓,然后比較,然后第一時間通過最高優(yōu)先級中斷來處理。但是這種方法不是太可靠,因為eeprom存儲的時候,都需要一定的延遲,你的余電夠不夠存儲很難說,對硬件電路要求比較高。
3,通過電池供電來存儲,通過紐扣電池來完成存儲后,單片機進入休眠狀態(tài)(低功耗狀態(tài))。主供電恢復(fù)后,退出休眠狀態(tài)。

評分

參與人數(shù) 2黑幣 +30 收起 理由
開心就好hhhh + 10
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:934353 發(fā)表于 2021-8-11 13:17 | 顯示全部樓層
robinsonlin 發(fā)表于 2021-8-9 13:43
掉電保存有三種辦法實現(xiàn):
1,及時存儲(當(dāng)數(shù)值發(fā)生重大變化時)或者檢測時間間隔存儲(比如5分鐘保存一次 ...

好的,非常感謝
回復(fù)

使用道具 舉報

ID:958976 發(fā)表于 2021-9-23 16:20 | 顯示全部樓層
lkc8210 發(fā)表于 2021-8-6 17:55
一定要掉電瞬間才寫入嗎?
換個思路,當(dāng)檢測到數(shù)據(jù)數(shù)值有變化就寫入
就不用理它掉不掉電了

如果這樣的話,用在開關(guān)類 傳感器類的產(chǎn)品上會不會就不太好?頻繁的擦寫,會不會導(dǎo)致產(chǎn)品使用壽命降低
回復(fù)

使用道具 舉報

ID:161164 發(fā)表于 2021-9-23 16:37 | 顯示全部樓層
gw422342988 發(fā)表于 2021-9-23 16:20
如果這樣的話,用在開關(guān)類 傳感器類的產(chǎn)品上會不會就不太好?頻繁的擦寫,會不會導(dǎo)致產(chǎn)品使用壽命降低

開關(guān)類傳感器類的產(chǎn)品有什么數(shù)據(jù)需要掉電記錄的?
如果該數(shù)據(jù)會不斷變化
那么在掉電那段時間也會繼續(xù)變化
記不記錄也沒所謂了吧

我的方法當(dāng)然是用在不用頻繁的擦寫的數(shù)據(jù)上

回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2021-9-23 18:44 | 顯示全部樓層
看到有人挖墳, 我就順便說兩句,

如果,使單片機內(nèi)部的EEPROM 的話, 不需要添加任何硬件,就可以通過“掉電中斷”,把數(shù)據(jù)存入 EEPROM。
由于從發(fā)現(xiàn)掉電,到徹底沒電,只有15ms , 左右的時間,所以,外部Eeprom的話比較難實現(xiàn)(時間不夠)。
內(nèi)部Eeprom的話,只要不需要初始化(格式化)的話,大約能存入200個字節(jié)的數(shù)據(jù),我想基本應(yīng)該夠用。
回復(fù)

使用道具 舉報

ID:592807 發(fā)表于 2021-9-23 19:49 | 顯示全部樓層
wulin 發(fā)表于 2021-8-7 06:07
樓主的問題不是純軟件可以解決的,需要配置少量硬件。單片機完成任何工作都需要有電源支持和足夠的時間。一 ...

最好不要,電量不足情況下,IO口電平不穩(wěn)定,可能會誤操作。一般會用到備份電源。
回復(fù)

使用道具 舉報

ID:514901 發(fā)表于 2021-9-24 10:01 | 顯示全部樓層
可以一個ADC一直讀取電源電壓值,當(dāng)電源電壓底到某一閾值就啟動馬上調(diào)用eeprom寫入,當(dāng)然,外圍電路加個電容,讓電壓降低延長個幾十ms,對單片機來說幾十ms夠做很多事情了。可以參考一下STC的掉電保存的方案
回復(fù)

使用道具 舉報

ID:382454 發(fā)表于 2021-9-29 15:08 | 顯示全部樓層
1要有一個ADC端口掃描VCC供電
2用一個法拉電容做為斷電的延續(xù)電源,電容肯定比電池經(jīng)久啊。從體積和壽命來說都有優(yōu)勢。
3執(zhí)行機智是數(shù)據(jù)發(fā)生改變,或斷電事件發(fā)生了,馬上寫入EERPOM,F(xiàn)在的EEPROM寫入次幾十萬次以上了,你根本不用考慮壽命的問題。
回復(fù)

使用道具 舉報

ID:712493 發(fā)表于 2021-9-30 08:19 | 顯示全部樓層
lkc8210 發(fā)表于 2021-8-6 17:55
一定要掉電瞬間才寫入嗎?
換個思路,當(dāng)檢測到數(shù)據(jù)數(shù)值有變化就寫入
就不用理它掉不掉電了

掉電寫入是為了減小寫入次數(shù),提高eeprom的壽命
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-9-30 12:00 | 顯示全部樓層
用比較器做個電源電壓檢測電路,把輸出接入單片機外中斷,單片機發(fā)現(xiàn)電壓不夠就開始寫eeprom。
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-9-30 12:01 | 顯示全部樓層
fj51hei 發(fā)表于 2021-9-30 08:19
掉電寫入是為了減小寫入次數(shù),提高eeprom的壽命

可以用鐵電,現(xiàn)在不貴,理論上可以無數(shù)次寫入。
回復(fù)

使用道具 舉報

ID:57657 發(fā)表于 2021-9-30 12:24 | 顯示全部樓層
如果EEPROM容量較大,你可以參考下鋰電池數(shù)碼產(chǎn)品充放電控制電路。
回復(fù)

使用道具 舉報

ID:420836 發(fā)表于 2021-10-1 07:46 | 顯示全部樓層
使用容量非常大的電容器來儲存電力作為備用。 當(dāng)發(fā)生斷電時,電容器放電。 可以將時間設(shè)計為足以存儲一些關(guān)鍵數(shù)據(jù)。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表