娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月06日(星期五)

正在發生

2019年12月06日 | AVR開發 Arduino方法(六) 內存子系統

發布者:平安心境 來源: eefocus關鍵字:AVR開發  Arduino方法  內存子系統 手機看文章 掃描二維碼
隨時隨地手機看文章

Arduino UNO R3主處理器ATMega328P的芯片內部擁有3種存儲器:數據存儲器,程序存儲器和電可擦寫可編程存儲器;它們各自有不同的用途。

1.數據存儲器

數據存儲器是一塊2KB大小的靜態隨機存儲器(SRAM)。其中一部分空間分配給了通用寄存器和I/O寄存器,其余部分一般用于存儲全局變量,堆棧數據和支持動態內存分配。它的存取速度快,但掉電后數據會丟失。

2.程序存儲器

程序存儲器是一塊32KB大小的閃存(Flash),其中0.5KB用于引導程序。它可以多次擦寫,掉電后數據不會丟失,一般用于存儲程序。

3.電可擦可編程只讀存儲器

電可擦寫可編程只讀存儲器(EEPROM)是一塊1KB大小的獨立數據存儲空間。它和程序存儲器一樣可以用于保存程序運行中的數據,但在掉電后數據不會丟失。

Arduino IDE提供了幾個EEPROM的示例,eeprom_write示例將0引腳上的模擬信號轉換為數字信號,并將轉換結果以字節的形式保存到EEPROM中:


 1 // eeprom_write.ino

 2 #include

 3 

 4 int addr = 0;

 5 

 6 void setup() {

 7 }

 8 

 9 void loop() {

10   int val = analogRead(0) / 4;

11 

12   EEPROM.write(addr, val);

13 

14   addr = addr + 1;

15   if (addr == EEPROM.length()) {

16     addr = 0;

17   }

18 

19   delay(100);

20 }


和eeprom_write示例相反,eeprom_read示例將EEPROM中的數據以字節的形式讀出,并打印到串口0上:


 1 // eeprom_read.ino

 2 #include

 3 

 4 int address = 0;

 5 byte value;

 6 

 7 void setup() {

 8   Serial.begin(9600);

 9   while (!Serial) {

10     ;

11   }

12 }

13 

14 void loop() {

15   value = EEPROM.read(address);

16 

17   Serial.print(address);

18   Serial.print("t");

19   Serial.print(value, DEC);

20   Serial.println();

21 

22   address = address + 1;

23   if (address == EEPROM.length()) {

24     address = 0;

25   }

26 

27   delay(500);

28 }


與EEPROM相關的Arduino庫函數有:

 

  EEPROM.write(address, val):向EEPROM指定地址寫入一個字節的數據

  address:指定數據寫入的地址

  val:寫入的數據

  EEPROM.read(address):從EEPROM指定地址讀出一個字節的數據

  address:指定數據讀取的地址

  函數返回讀取的一個字節數據

  EEPROM.length():獲取EEPROM大小

  函數返回EEPROM的大小

 

ATMega328P的EEPROM由3個寄存器控制,EEPROM地址寄存器(EEARH和EEARL)和EEPROM數據寄存器EEDR分別用于在寫入或讀取EEPROM時保存地址信息和數據信息。EEPROM控制寄存器EECR的結構如下圖所示:



EEPM1

EEPM0

EERIE

EEMPE

EEPE

EERE

將EEPROM主機寫使能位EEMPE置1后,4個時鐘周期內將EEPROM寫使能位EEPE置1,就可以數據寫入EEPROM的指定地址中;向EEPROM讀使能位EERE寫入1,則可以將EEPROM指定地址的數據讀入EEDR寄存器中。


通過直接訪問寄存器改寫以上程序為:

 1 // eeprom_write_reg.ino

 2 #include

 3 

 4 int addr = 0;

 5 void eeprom_write(int address, byte val);

 6 

 7 void setup() {

 8 }

 9 

10 void loop() {

11   int val = analogRead(0) / 4;

12 

13   eeprom_write(addr, val);

14 

15   addr = addr + 1;

16   if (addr == EEPROM.length()) {

17     addr = 0;

18   }

19 

20   delay(100);

21 }

22 

23 void eeprom_write(int address, byte val) {

24   while (EECR & (1 << EEPE));

25   EEAR = address;

26   EEDR = val;

27   EECR |= (1 << EEMPE);

28   EECR |= (1 << EEPE);

29 }

30 

31 // eeprom_read.ino

32 #include

33 

34 int address = 0;

35 byte value;

36 byte eeprom_read(int address);

37 

38 void setup() {

39   Serial.begin(9600);

40   while (!Serial) {

41     ;

42   }

43 }

44 

45 void loop() {

46   value = eeprom_read(address);

47 

48   Serial.print(address);

49   Serial.print("t");

50   Serial.print(value, DEC);

51   Serial.println();

52 

53   address = address + 1;

54   if (address == EEPROM.length()) {

55     address = 0;

56   }

57 

58   delay(500);

59 }

60 

61 byte eeprom_read(int address) {

62   while (EECR & (1 << EEPE));

63   EEAR = address;

64   EECR |= (1 << EERE);

65   return EEDR;

66 }


關鍵字:AVR開發  Arduino方法  內存子系統 引用地址:AVR開發 Arduino方法(六) 內存子系統

上一篇:AVR開發 Arduino方法(五) 模數轉換子系統
下一篇:AVR開發 Arduino方法(七) 嵌入式操作系統FreeRTOS

推薦閱讀

此前有來自SAR的消息顯示,索尼將會推出一款6000萬像素的全畫幅傳感器,同時該傳感器還會支持8K視頻。近日這一消息被進一步證實,該傳感器為索尼即將推出的一款新型傳感器,具體型號為IMX455,據了解這款傳感器為IMX551的精簡版。規格方面該傳感器不僅具備6000萬的高像素,可錄制8K視頻,同時還支持最低64的原生ISO,這意味著這款傳感器或許會擁有更好的動...
無論是紐約市市長為了政治需要驅逐機器人的發言,還是海底撈機器人服務員的勤奮,不止一次的事件提醒我們,機器人隨著時代的洪流而至,作為被接受的人類,應該去注意機器人與人在社交中的關系。服務機器人和移動機器人正在逐步進入許多人口稠密的環境,包括醫院,購物中心和人們的住所。為了使這些機器人與周圍環境中的人類互動,他們(機器人設計者)應...
據北京日報報道,12月4日,中共北京市委召開新聞發布會,市科委黨組書記、主任許強表示,在強化國家戰略科技力量方面,北京將加快建設國家實驗室,全力建好北京懷柔綜合性國家科學中心,持續推進世界一流重大科技基礎設施集群建設,前瞻布局新一批世界一流新型研發機構。許強指出,在統籌布局“從0到1”基礎研究和關鍵核心技術攻關方面,做強戰略長板,力...
當芯片工藝節點不斷進展的時候,玩家卻越來越少了。在代表著SoC最高水平的智能旗艦機芯片領域,只有屈指可數的幾個廠商還在跟進。如果將蘋果和三星排除,最有實力問鼎的就是聯發科和高通這對“老冤家”了。近日,隨著采用4nm工藝的天璣9000和驍龍8 Gen1的發布,聯發科和高通爭奪安卓旗艦機芯片No 1的戰爭又全面升級。站上同一起跑線天璣9000和驍龍8Gen ...

史海拾趣

問答坊 | AI 解惑

一個單片機啟動信號的問題 請指導

兩快單片機A和B通信 通過無線收發模塊  A要產生一個啟動信號 待B受到確認后 B就發送數據給A 我用單片機A一個并行口引腳p2.7接無線發射模塊數據輸入端 那么這個啟動信號怎么用呢 邏輯是怎么樣呢 能不能實現A和B的握手呢 謝謝各位高手指導 謝謝…

查看全部問答∨

DSP開發100問【轉帖】

一、時鐘和電源                   問:DSP的電源設計和時鐘設計應該特別注意哪些方面?外接晶振選用有源的好還是無源的             &nb ...…

查看全部問答∨

手把手教你單片機試驗程序

手把手教你單片機試驗程序…

查看全部問答∨

牛人的心得

DSP硬件調試經驗與個人心得 ,本人沒有全看不過感覺還行。…

查看全部問答∨

VirtualCopy在WinCE6下面不能用

在wince6下面寫一個應用程序,要訪問物理地址,發現不能用VirtualCopy,返回錯誤時87,表示參數錯誤 代碼如下:         LPVOID VIDEO_BUFFER=VirtualAlloc(                 0, ...…

查看全部問答∨

北京某外企生物特征高科技項目招聘

硬件工程師 1 人 職位描述: 1.        設計和優化電路,制作樣機,配合其他軟硬件工程師完成調試 2.        分析問題、解決問題,改進設計,提高質量 3.     &nb ...…

查看全部問答∨

【求助】 有關晶振?? 示波器測不出波形????

在msp430f149 只供電的的情況下,其晶振的兩管腳輸出電壓約為 2.5v 1.9v 當焊入2m晶振時,用示波器觀察,晶振兩腳對地的電壓是2.5v 1.9v ,晶振兩腳間為50hz的方波,高低電平并不規則,這是怎么回事啊???…

查看全部問答∨

MSP430的USB

MSP430的5系列和6系列,都支持USB,不知道好不好用  …

查看全部問答∨

求單片機與GTM900連接電路,有軟件更好

RT,求解。51單片機與GTM900連接電路,我只要GPRS功能就可以了。多謝各位大蝦…

查看全部問答∨

求Altera USB Blaster下載線 一個 USB的

本帖最后由 ddllxxrr 于 2016-1-7 16:58 編輯 求Altera USB Blaster下載線 一個 USB的剛開始學習,貴的買不起,帶價格,謝謝   本下載電纜適用于ALTERA CPLD/FPGA芯片的下載調試,支持JTAG、AS、PS下載模式。   USB Blaster下載電纜 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 四会市| 温州市| 梅州市| 柳林县| 开原市| 忻州市| 肇东市| 阿坝县| 鄂托克前旗| 东乡县| 凤山县| 大关县| 喀喇| 武陟县| 石渠县| 泸西县| 三都| 阿拉善右旗| 云安县| 潮州市| 陆河县| 肥西县| 南城县| 阳原县| 吉木萨尔县| 丹阳市| 凌海市| 宁晋县| 门源| 达日县| 潞西市| 丰城市| 鸡东县| 崇阳县| 漳州市| 黑龙江省| 准格尔旗| 海安县| 花莲县| 芦山县| 胶州市|