找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求一個檢測到參數(shù)改變就往EEPROM中寫入的MCU程序框架

[復(fù)制鏈接]
ID:997026 發(fā)表于 2022-2-28 16:58 | 顯示全部樓層 |閱讀模式
現(xiàn)在要做一個小的監(jiān)控器,需要設(shè)置監(jiān)控時間,為了每次開機時不需要一直設(shè)置時間,需要在每次關(guān)機前保存當前參數(shù),下次開機前就不需要重新設(shè)置了。

現(xiàn)在是想把時間參數(shù)保存到EEPROM中,當設(shè)置好時間時,同時就自動寫入EEPROM中,下次開機后再讀取。如果時間沒有被改動,就不需要重復(fù)寫入,只是檢測到時間改動后再寫入。

比如如果當前時間設(shè)置是20分鐘,如果這一天中,時間設(shè)置的都是20分鐘, 沒有設(shè)置新的時間,就保存20分鐘到EEPROM, 如果上午設(shè)置的是20分鐘,下午設(shè)置了新的時間30分鐘,當檢測到時間改變時,就把30寫進EEPROM, 覆蓋之前的20. 簡單說就是把最后一次設(shè)置的時間寫入EEPROM.

不需要掉電檢測,初步就是這個想法,只需檢測時間參數(shù)改動就往EEPROM中寫入新的參數(shù)保存,不改動就不寫。

求一個大概的程序框架,只需要檢測到時間參數(shù)改動就往EEPROM中寫,以及下次開機讀取的大致程序。不需要EERPOM本身的讀寫程序。

感謝各位!
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2022-2-28 20:31 | 顯示全部樓層
        if(a!=b)
        {
                b=a;
                //保存b到EEPROM中
        }
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2022-2-28 20:47 | 顯示全部樓層
Eeprom 大體有三種,  
一種是 片外Eeprom:  比如 AT24C02, 一般需要通過 IIC 傳輸協(xié)議 進行讀寫。寫一個字節(jié)大約需要 40us 左右的時間。
一種是 片內(nèi)Eeprom:  51系列來講,比較有代表性的就是 WCH 的  CH55x系列,讀寫都比較方便,就是寫幾個寄存器,寫一個字節(jié),大約需要5us 左右。
還有一種就是 片內(nèi)Flash 模擬 Eeprom,比較有代表性的就是STC的全系列。 基本和片內(nèi)Eeprom 用起來差不多,最大的區(qū)別就是不能改寫,只能整個扇區(qū)擦出后,重寫,如果你要使用這種Eeprom 的話,就要考慮一個擦除問題,因為擦除一個扇區(qū)的時間大約需要 21ms,而單片機在理想狀態(tài)下,從感知掉電到徹底沒電,或者說剩余電量可以用來操作Eeprom 的存留時間不超過10ms,所以,你要在掉電是存儲Eeprom必須在感知掉電前就完成了扇區(qū)擦除工作。這個在程序里必須提前做好。其他的就是普通操作了。
回復(fù)

使用道具 舉報

ID:997026 發(fā)表于 2022-2-28 23:15 | 顯示全部樓層
wulin 發(fā)表于 2022-2-28 20:31
if(a!=b)
        {
                b=a;

哈哈,這么簡單嘛
回復(fù)

使用道具 舉報

ID:997026 發(fā)表于 2022-2-28 23:16 | 顯示全部樓層
188610329 發(fā)表于 2022-2-28 20:47
Eeprom 大體有三種,  
一種是 片外Eeprom:  比如 AT24C02, 一般需要通過 IIC 傳輸協(xié)議 進行讀寫。寫一個字 ...

謝謝,我用的是AVR單片機,不知道擦除EEPROM是不是先要擦除扇區(qū),以前從來沒用過EEPROM
回復(fù)

使用道具 舉報

ID:997026 發(fā)表于 2022-3-7 22:32 | 顯示全部樓層
wulin 發(fā)表于 2022-2-28 20:31
if(a!=b)
        {
                b=a;

有個問題請教下,我現(xiàn)在需要保存的數(shù)據(jù)有100多個,如果有改動就保存的話,要設(shè)置100多個變量, 程序太長了,寫下來累死了。有沒有比較簡單方便的寫法,比如循環(huán)之類的,可以方便的實現(xiàn)你這個功能的?謝謝
回復(fù)

使用道具 舉報

ID:944091 發(fā)表于 2022-3-7 22:50 來自觸屏版 | 顯示全部樓層
hxdby 發(fā)表于 2022-3-7 22:32
有個問題請教下,我現(xiàn)在需要保存的數(shù)據(jù)有100多個,如果有改動就保存的話,要設(shè)置100多個變量, 程序太長 ...

用指針可以實現(xiàn)
回復(fù)

使用道具 舉報

ID:997026 發(fā)表于 2022-3-7 23:34 | 顯示全部樓層
chenchuanke 發(fā)表于 2022-3-7 22:50
用指針可以實現(xiàn)

明白,謝謝,我研究下
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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