簡介:本文介紹了AVR單片機的EEPROM讀寫數(shù)據(jù)時間問題,并分析了3個方法的各自優(yōu)缺點。
由于AVR的EEPROM寫周期比較長(一般為毫秒級),因此在編程使用過程中要特別注意.對于讀EEPROM沒什么好說的,讀一個字節(jié)的數(shù)據(jù)要耗費4個時鐘周期,可以忍受,寫就比較麻煩了,雖然放在EEPROM的數(shù)據(jù)都不是頻繁訪問的;雖然可以用讀-比較-寫的機制降低EEPROM的寫操作頻度,但在寫入過程中,過長的寫入周期還是會造成一些問題,下面就分析一下幾種方式的EEPROM寫操作.
1. 循環(huán)查詢式
將地址和數(shù)據(jù)寫入EEPROM相關的寄存器,置寫標志后就循環(huán)不斷查詢寫完成標志,直到寫完成,退出循環(huán),順序執(zhí)行其他程序.在置寫入標志到寫完成的這段時間,程序除了不斷查詢寫完成標志和響應硬件中斷之外什么也不干,這段時間就這么浪費了,如果是個實時性要求比較高的應用,浪費的就不僅是時間了,很可能在這段時間里I/O狀態(tài)的變化不能得到及時的響應,如果一下子要進行多個字節(jié)的EEPROM的寫入操作,那情況會更糟.針對這種情況,有種解決辦法就是,這個寫完成查詢放在軟件的死循環(huán)中(無操作系統(tǒng)的情況下,系統(tǒng)啟動后都要進入一個死循環(huán)),每循環(huán)一次查詢一次寫完成標志,這樣就不必一直等待寫操作完成而可以干別的事情了,但是這樣會帶來兩個問題.一是,如果死循環(huán)周期無法保證,則每一次的EEPROM寫操作的完成標志查詢也得不到保證,從而進行一次EEPROM寫操作的周期也無法保證(最長延遲時間就是一個死循環(huán)周期的最長時間);二是,在執(zhí)行一次EEPROM寫入操作到寫完成這段時間里死循環(huán)里其它的子程序不能進行EEPROM讀寫操作.第一個問題如果能保證最大循環(huán)周期在延遲允許范圍內就不是問題了,否則就得采取下面講到的方式二了;第二個問題的解決方法是每次EEPROM讀寫操作都要在其中加入對EEPROM寫完成標志寄存器的判斷,如果有數(shù)據(jù)正在寫入,則等待或退出,但等待和退出又會造成等待延遲和寫入操作不成功的問題,解決辦法是先放入一個數(shù)據(jù)緩沖區(qū),待上一次寫入操作完成,再從緩沖區(qū)里拽出一個字節(jié)進行下一次寫入周期,但這又會涉及到選擇合適的緩沖區(qū)大小以及的問題,這個問題在下面中斷式操作里繼續(xù)討論.
2.定時查詢式
在寫入EEPROM地址和數(shù)據(jù)寄存器置寫標志后啟動定時器,定時查詢寫完成標志,這種方法繼承了方式1的大部分優(yōu)缺點,唯一的進步就是能夠確定寫操作延遲時間為定時周期.
3.中斷式
編寫EEPROM寫完成中斷子程序,設置一個FIFO緩沖區(qū),要寫入的數(shù)據(jù)先放入這個FIFO,如果EEPROM操作空閑,則從FIFO中揪一字節(jié)數(shù)據(jù)出來寫EEPROM,置完寫完成標志就返回,然后去干別的事情,EEPROM寫完成產(chǎn)生一個中斷,在中斷服務程序中再從FIFO中揪一個字節(jié)去寫EEPROM,如此循環(huán)直到FIFO空,這種方式雖然能在第一時間完成一次寫操作,但是還是有個和和方式1中提到一樣的問題,怎么選擇這個FIFO的大小.小了,待寫入數(shù)據(jù)可能溢出丟失,大了,多大算大,1K夠不夠,10K夠不夠,硬件上有這么多RAM空間么,這就需要根據(jù)實際資源和系統(tǒng)需求來定了.如果EEPROM寫操作頻率很低,比一次EEPROM寫操作間隔還要長得多,那么幾個單位的FIFO就足夠了;如果EEPROM寫操作頻率可能很高或一次大批量連續(xù)寫入數(shù)據(jù)就要求很大的FIFO,達到能夠保證數(shù)據(jù)不丟失,這就要根據(jù)批量數(shù)據(jù)大小和寫頻率來定了,另外還要考慮可用RAM空間的限制來找出最佳值,同時有FIFO溢出一定要制定相應的應對措施.
最后注意兩點:
1. 讀寫之前一定要檢測是否已經(jīng)有EEPROM寫操作;在寫完成之后一定要再讀出寫入的數(shù)據(jù)校驗寫入操作是否成功,不成功則EEPROM損壞,要做好應對措施.
2.如果要保存一個16位的數(shù)據(jù),一定要保證在這16位數(shù)據(jù)分成的兩字節(jié)都成功寫入了EEPROM再去讀該數(shù)據(jù),否則在剛寫完一個字節(jié)就去讀該數(shù)據(jù),得到的數(shù)據(jù)顯然不是你想要的,如果該數(shù)據(jù)是一重要參數(shù),后果可想而知.
上一篇:用AVR單片機實現(xiàn)多功能數(shù)顯電子秤的設計方案
下一篇:關于AVR中斷的優(yōu)先級
推薦閱讀
史海拾趣
為了進一步擴大市場份額,Dean Technology公司開始積極拓展國際市場。他們通過設立海外辦事處、與當?shù)仄髽I(yè)建立合作關系等方式,將產(chǎn)品推向全球。在這個過程中,公司不斷優(yōu)化產(chǎn)品設計,提高生產(chǎn)效率,以滿足不同國家和地區(qū)客戶的需求。隨著國際市場的不斷拓展,Dean Technology的高壓二極管產(chǎn)品逐漸在全球范圍內獲得了良好的口碑。
芯邦科技自成立以來,一直致力于半導體技術的研發(fā)與創(chuàng)新。在指紋識別領域,芯邦于2018年推出了業(yè)界首款超低成本、超低功耗的指紋識別控制芯片,該芯片集成了指紋傳感器、算法處理器、藍牙、主控和flash等模塊,為指紋識別技術在非手機領域的廣泛應用提供了強有力的技術支撐。這一創(chuàng)新不僅展示了芯邦在半導體設計領域的實力,也為其在指紋識別市場贏得了先機。
面對全球環(huán)境問題日益嚴峻的現(xiàn)狀,F(xiàn)ibrefab積極響應環(huán)保號召,推動綠色生產(chǎn)和可持續(xù)發(fā)展。公司采用環(huán)保材料和生產(chǎn)工藝,降低產(chǎn)品生產(chǎn)和使用過程中的能耗和排放。同時,F(xiàn)ibrefab還積極參與環(huán)保公益活動和社會責任項目,為保護環(huán)境貢獻自己的力量。這一舉措不僅提升了Fibrefab的企業(yè)形象和社會責任感,也為其長期發(fā)展奠定了堅實基礎。
E Connector Solutions公司自成立以來,一直注重技術創(chuàng)新。在早期階段,公司研發(fā)團隊通過深入的市場調研,發(fā)現(xiàn)電子連接器市場存在著對高速、高密度連接器日益增長的需求。公司投入大量研發(fā)資源,成功開發(fā)出一款新型連接器產(chǎn)品,其傳輸速度更快、密度更高,滿足了市場的需求。隨著產(chǎn)品的推出,E Connector Solutions公司逐漸在市場中樹立了技術領先的形象,贏得了客戶的信賴。
作為一家有社會責任感的企業(yè),創(chuàng)世公司始終關注環(huán)境保護和可持續(xù)發(fā)展。公司積極推廣綠色生產(chǎn)技術和資源循環(huán)利用方案,減少生產(chǎn)過程中的能源消耗和廢棄物排放。同時,創(chuàng)世公司還積極參與社會公益活動,為社會和環(huán)境貢獻自己的力量。這種對社會責任的關注和擔當使得創(chuàng)世公司在電子行業(yè)中樹立了良好的形象。
創(chuàng)世公司(CS)的創(chuàng)立源于對未來技術趨勢的敏銳洞察。在5G、人工智能、物聯(lián)網(wǎng)等行業(yè)還未廣泛崛起的初期,創(chuàng)世公司就預見到這些技術將引領未來電子行業(yè)的發(fā)展。基于這種戰(zhàn)略眼光,創(chuàng)世公司決定專注于SD NAND存儲產(chǎn)品的研發(fā)和生產(chǎn)。這一決策不僅為公司的后續(xù)發(fā)展奠定了堅實的基礎,也展示了創(chuàng)始團隊對未來技術趨勢的堅定信心。
戲法人人會變,各有巧妙不同--用有限狀態(tài)機對鍵盤模塊的另類實現(xiàn) 最近阿姨家里的幾個表哥都在熱烈的討論著狀態(tài)機,表弟我心癢,也想來湊湊熱鬧。要想加入他們的討論,首先得明白什么是狀態(tài)機,這是今天的主題之一,不過我會首先給出定義,然后談談我的淺薄的理解。另外,前些日子正在學習GOF的《設計模式》,其中 ...… 查看全部問答∨ |
LED節(jié)能燈1年節(jié)約電費相當于建6座三峽電站 節(jié)能燈壽命為2500~5000小時,而半導體LED照明燈正常情況下的壽命是5萬-8萬小時,但LED燈的耗電量只有普通白熾燈、霓虹燈的1/10。因此,如果我國的照明全部采用LED燈,則一年節(jié)約的電費相當于建造了6座三峽電站。有關部門應該采取強制措施推廣節(jié)能產(chǎn) ...… 查看全部問答∨ |
常用標志寄存器含義的理解,這是微型計算機的題目,可我不知道如何回答,我是學軟件的,初次接觸這些硬件的知識,老是很模糊,弄不清楚實際是怎么回事,請各位給點意見,回答一下~謝謝~… 查看全部問答∨ |
|
誰有MSC51單片機視頻教程及課件,最好是北航的!謝謝! 我的QQ號:250193148 它發(fā)到我郵箱里或者在線傳給我 謝謝了!… 查看全部問答∨ |
|
秀下我做的調試工具:UsbHub+xlink+USB轉串口/485/Nrf24L01/紅外 秀下我的調試工具UsbHub+xlink+USB轉串口/485/Nrf24L01/紅外 看了小馬哥的多功能調試工具真是羨慕啊,于是也做了個高速USBhub托了個xlink, 用stm32實現(xiàn) USB轉串口TTL/串口232/串口485(通過跳線來實現(xiàn))/NRF24L01/紅外,同時支持輸出一路PWM輸出。 ...… 查看全部問答∨ |
|
HELPER2416開發(fā)板(二):安裝fedora開發(fā)環(huán)境 我下了光盤,按照HELPER2416_V2 開發(fā)板LINUX 用戶手冊 的說明按裝上了。fedora開發(fā)環(huán)境。 沒有什么可注意的地方,有一個地方就是安裝fedora那個選項,直接選中解壓后的F12目錄就行。我不知怎么搞出兩個fedora文件,反正也好用: 我現(xiàn)在的 ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設備數(shù)驅動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 工業(yè)隔離器的通信協(xié)議,Modbus、CANopen與EtherCAT的集成
- 三星第三次延長屏幕“綠線”換屏期限:可惜中國用戶無緣
- 工業(yè)設備振動檢測中MEMS傳感器的選型與應用指南
- 工業(yè)現(xiàn)場總線技術,Profinet、EtherCAT與Modbus的通信協(xié)議對比
- 工業(yè)信號隔離技術詳解:電容耦合、變壓器耦合與光電隔離的優(yōu)劣分析
- 工業(yè)信號調節(jié)器的PCB設計:布局、布線與抗干擾策略
- 可編程芯片首次用光訓練神經(jīng)網(wǎng)絡
- 天工機器人:人形機器人即將實現(xiàn)小批量量產(chǎn),未來售價可與入門轎車相當
- 工業(yè)信號調節(jié)器的電磁兼容性(EMC)測試與整改指南
- 工業(yè)信號調節(jié)器的故障診斷:基于機器學習的預測性維護