<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          AVR熔絲位快速入門

          作者: 時(shí)間:2011-05-06 來源:網(wǎng)絡(luò) 收藏

          通過熔絲來控制芯片內(nèi)部的一些功能,比如JTAG,時(shí)鐘的使用,掉電檢測(cè)電壓,是否允許調(diào)試等。

          Studio 中 STK500 處理有巨大的優(yōu)勢(shì):它是以功能組合讓用戶配置。 這種方式與小馬(PnoyProg2000,SL-ISP)相比,具有以下的優(yōu)勢(shì)(優(yōu)勢(shì)是如此明顯,可以用“巨大優(yōu)勢(shì)”來形容):

          有效避免因不熟悉讓芯片鎖死 (這是初學(xué)者的惡夢(mèng)), 筆者曾經(jīng)鎖死過三片Atmega16。

          不需要靠記憶與查文檔,就能配置(這也是初學(xué)者的惡夢(mèng))

          動(dòng)手之前:請(qǐng)你一定弄清楚了,你這樣改會(huì)有什么后果,除非你有很多錢不在乎多鎖死幾個(gè)芯片。備份你的熔絲位狀態(tài),在點(diǎn)擊Program之前再次檢查熔絲位設(shè)置正確與否,不要誤點(diǎn)了某項(xiàng)而沒有注意到。

          通過下圖的方法打開連接:

          打開連接

          使用操作界面如下: (注意:下圖中,打勾的表示選中,代表0。沒有打勾的表示1)。

          融絲位

          上圖的資料有很多相關(guān)項(xiàng),你需要認(rèn)識(shí)以下的代碼,以理解意思。英文翻譯說明如下:

          英文中文
          On-Chip Debug Enabled片內(nèi) 調(diào)試 使能
          JTAG Interface EnabledJTAG 接口 使能
          Serial program downloading (SPI) enabled

          串行編程下載(SPI) 使能

          (ISP下載時(shí)該位不能修改)

          Preserve EEPROM memory through the Chip Erase cycle;芯片擦除時(shí)EEPROM的內(nèi)容保留
          Boot Flash section size=xxxx words 引導(dǎo)(Boot)區(qū)大小為xxx個(gè)詞
          Boot start address=$yyyy;引導(dǎo)(Boot)區(qū)開始地址為 $yyyy
          Boot Reset vector Enabled引導(dǎo)(Boot)、復(fù)位 向量 使能
          Brown-out detection level at VCC=xxxx V;掉電檢測(cè)的電平為 VCC=xxxx 伏
          Brown-out detection enabled;掉電檢測(cè)使能
          Start-up time: xxx CK + yy ms

          啟動(dòng)時(shí)間 xxx 個(gè)時(shí)鐘周期

          + yy 毫秒

          Ext. Clock;外部時(shí)鐘
          Int. RC Osc.內(nèi)部 RC(阻容) 振蕩器
          Ext. RC Osc.外部 RC(阻容) 振蕩器
          Ext. Low-Freq. Crystal;外部 低頻 晶體
          Ext. Crystal/Resonator Low Freq外部晶體/陶瓷振蕩器 低頻
          Ext. Crystal/Resonator Medium Freq外部晶體/陶瓷振蕩器 中頻
          Ext. Crystal/Resonator High Freq外部晶體/陶瓷振蕩器 高頻

          注:以上中文是對(duì)照 ATmega16的中、英文版本數(shù)據(jù)手冊(cè)而翻譯。盡量按照了官方的中文術(shù)語。

          應(yīng)用舉例:

          比如我們想使用片內(nèi)的RC振蕩(即不需要接晶振),可以選擇選擇下面三者之一:

          • Int. RC Osc. 8 MHz; Start-up time: 6 CK + 0 ms;
          • [CKSEL=0100 SUT=00] Int. RC Osc. 8 MHz; Start-up time: 6 CK + 4 ms;
          • [CKSEL=0100 SUT=01] Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0100 SUT=10]

          如圖:內(nèi)部1M晶振,默認(rèn)情況典型設(shè)置。(兩個(gè)圖分別為上下兩部分,沒有顯示的部分均為不選中狀態(tài)。)

          默認(rèn)及典型設(shè)置

          下圖顯示的是選擇內(nèi)部晶振,1 Mhz RC

          默認(rèn)及典型設(shè)置

          比如我們想使用外部7.3728M晶振,可以選擇選擇下面三者之一:

          • Ext. Crystal/Resonator High Freq.;
          • Start-up time: 258 CK + 4 ms;
          • [CKSEL=1110 SUT=00] 或后面與Ext. Crystal/Resonator High Freq.;.... 有關(guān)的選擇。

          如下兩圖:7.3728M晶振典型融絲位(及本站的開發(fā)板使用時(shí)候的典型設(shè)置

          熔絲位典型設(shè)置

          7.3728M晶振時(shí)選擇下面的熔絲位

          如果你在使用過程中遇到什么問題,歡迎討論,http://bbs.avrvi.com。


          后記:說說Mega128的熔絲位

          ATmega128是avr系列中一款高性能的芯片,設(shè)計(jì)的時(shí)候兼容M103模式,但是這個(gè)M103模式經(jīng)常害人?;诖?,說說ATmega128的熔絲位,順便說說其他的功能。

          默認(rèn)情況下M103模式是選中的,應(yīng)該將其去掉;晶振是內(nèi)部1M晶振,如果你使用外部晶振,應(yīng)該進(jìn)行修改。M128可以開啟硬件的看門狗,選中此項(xiàng),看門狗不需要程序初始化,只需要程序里面喂狗就可以了。


          默認(rèn)熔絲第一部分

          M103兼容模式,使能JTAG,使能SPI,Bootloader區(qū)大小4096,未使能BOOT。

          默認(rèn)熔絲第一部分

          默認(rèn)熔絲第二部分

          DOD為2.7V,內(nèi)部1M晶振。

          默認(rèn)熔絲第二部分

          下面是本站使用M128開發(fā)板的典型設(shè)置,M103模式取消,使用M128模式,使用外部7.3728M晶振。

          典型熔絲第一部分(只說修改部分)

          去掉了M103,從而使用M128模式。

          典型熔絲第一部分

          典型熔絲第二部分

          選擇最后一項(xiàng),即使用外部高頻晶振。

          典型熔絲第二部分

          晶振相關(guān)文章:晶振原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();