AVR單片機具有內部RC振蕩器,對于內部振蕩器的校正一直是一個比較難的問題,由于這個問題的困擾,導致很多正常的程序無法正常工作,特此整理該文檔供客戶參考,如果有需要英文的可以到ATMEL官方網站下載。
特點
l?????????? 可以使用 STK500, AVRISP, JTAGICE 或 JTAGICE mkII 校正
l?????????? 可以使用第三方編程器校正
l?????????? 調整 RC 頻率到 +/-1% 精度
l?????????? 在任意電壓和溫度下調整 RC 振蕩器
l?????????? 調整 RC 振蕩器到指定頻率
l?????????? 支持所有帶有 RC 振蕩器的 AVR 單片機
l?????????? 可以選擇振蕩器時鐘頻率
?
介紹
這篇應用筆記說明了快速和精確校正內部 RC 振蕩器的方法。它提供了容易修改的固件源代碼,可以用在任何帶有內部可調 RC 振蕩器的 AVR 單片機中。這個固件允許使用 AVR STK500, AVRISP 或 JTAGICE,但是也可以用在第三方系統中(如編程器)。
?
大部分 AVR 單片機提供了內部 RC 振蕩器。這個 RC 振蕩器的頻率可以校正到 +/-1%。這個特點使其提供了更大的靈活性和節約了成本。
?
在 Atmel 的工廠中是在固定電壓和溫度下進行了校正(典型是 25°C和 5V),而內部 RC 振蕩器的頻率是受到溫度和電壓同時影響的,這使得用戶在特定的應用環境時可能需要進行再次校正。再次校正可以得到更高的精度,匹配特定的電壓或溫度,甚至調整到一個完全不同的頻率。
?
這篇應用筆記說明的校正方法使用的時間只比從簽名中讀取工廠校正字節并回寫到設備中稍長。全部的編程時間幾乎不受到校正的影響。
?
注意在某些系統中非常依賴于運行時間,這說明在應用中在整個溫度范圍需要一個精確的與電壓無關的系統時鐘。在這種情況下一個手表晶體可以提供可靠和低成本的解決方案。
?
在這篇文檔的最后有快速開始指南。
?
操作理論 – 內部 RC 振蕩器
在產品中內部 RC 振蕩器在 5V 或 3.3V 下校正。工廠校正的精度在 +/-3 或 +/-10% (參考數據手冊)。如果一個設計需要比工廠標準校正更高的精度,就需要再次校正 RC 振蕩器,這樣可以得到大約 +/-1%(對于工廠校正精度是+/-10%的器件是 +/-2%)的精度。
?
時鐘選擇
AVR 熔絲的設置控制了系統使用的時鐘源。為了使用內部 RC 振蕩器,需要選擇正確的熔絲。數據手冊中說明了可以使用的熔絲設置。
?
基本頻率
下面小節給出了 AVR 單片機內部 RC 振蕩器說明。
?
一些 AVR 單片機有一個 RC 振蕩器,其它的有 4 種不同的 RC 振蕩器可以選擇,頻率范圍從 1MHz 到 9.6MHz。校正內部 RC 振蕩器使用晶體校正寄存器:SCCAL(在 IO 頭文件中定義了)。OSCCAL 寄存器是一個字節寬度,它可以對系統頻率進行微調,校正 RC 振蕩器就利用了這個微調。
?
當單片機被 Atmel 校正后,校正字節就存放到單片機的簽名中。不同芯片的校正字節之間差異可能很大,因為 RC 振蕩器與工藝有關,有一定離散性。如果芯片有多于一個振蕩器,那每個振蕩器都對應一個校正字節。
?
大多數單片機的缺省 RC 校正字節在復位時自動從簽名中載入,并復制到 OSCCAL 寄存器中。例如,ATmega8 的默認時鐘設置是內部 1MHz RC 振蕩器;對應的 1MHz 校正字節在復位后自動載入。如果熔絲改變為 4MHz 振蕩器,校正字節就需要手工載入 OSCCAL 寄存器了。編程工具可以從簽名中讀取 4MHz 校正字節并強制存放到 Flash 或 EEPROM 中,然后由用戶程序在運行時讀取出來再復制到 OSCCAL 寄存器中。
?
為了容易使用 OSCCAL 寄存器調整振蕩器,一些單片機可以設置系統的預分頻時鐘。預分頻寄存器(CLKPR) 可以用預定義的系數比例變化系統時鐘。同樣,這個預分頻可以通過熔絲預先設置;編程 CKDIV8 熔絲就設置 CLKPR 系統時鐘分頻 8。這可以保證芯片在低于最大頻率下操作,CLKPR 可以在運行時修改。
?
基本頻率是定義為不分頻。
?
RC振蕩器總結
AVR 單片機在不同時期使用了不同的 RC 振蕩器。一個關于 RC 振蕩器的回顧參見表1。芯片列表按照振蕩器類型排序,也差不多是按照發布時間排序的。表中只列出了可以調整振蕩器的芯片。
?
表1.帶有內部 RC 振蕩器的芯片特點,按照版本分類
振蕩器版本 器件 RC 振蕩器頻率 CKDIV PRSCK
1.1 ATtiny12 1.2 - -
1.2 ATtiny15 1.6 - -
2.0 ATmega163 1.0 - -
2.0 ATmega323 1.0 - -
3.0 ATmega8 1.0,2.0,4.0和8.0 - -
3.0 ATmega16 1.0,2.0,4.0和8.0 - -
3.0 ATmega32 1.0,2.0,4.0和8.0 - -
3.1 ATmega64 1.0,2.0,4.0和8.0 - XDIV(1)
3.1 ATmega128 1.0,2.0,4.0和8.0 - XDIV(1)
3.0 ATmega8515 1.0,2.0,4.0和8.0 - -
3.0 ATmega8535 1.0,2.0,4.0和8.0 - -
3.0 ATmega26 1.0,2.0,4.0和8.0 - -
4.0 ATmega162 8.0 是 是
4.0 ATmega169(2) 8.0 是 是
4.0 ATmega165 8.0 是 是
4.1 ATmega13 4.8和9.6 是 是
4.2 ATmega2313 4.0和8.0 是 是
5.0 ATmega48
ATmega88
ATmega168 8.0 是 是
5.0 ATmega25
ATmega45
ATmega85 8.0 是 是
5.0 ATmega325
ATmega3250
ATmega645
ATmega6450 8.0 是 是
5.0 ATmega329
ATmega3290
ATmega649
ATmega6490 8.0 是 是
5.0 AT90CAN128 8.0 是 是
5.0 AT90PWM2
AT90PWM3 8.0 是 是
注意:
1.?????? 這個器件的預分頻寄存器叫做 XDIV。
2.?????? ATmega169 修訂 F 使用 5.0 版本的振蕩器。
?
?
版本1.X
這個版本是 AVR 單片機最早的可以校正的內部 RC 振蕩器,它提供了 1.2MHz 到 1.6MHz 的頻率。校正值存放在簽名中,但是不能自動載入,必須在運行時手工加載到 OSCCAL 寄存器。這個版本的振蕩器的頻率高度依賴于工作電壓和溫度。
?
版本2.X
這個版本的振蕩器提供了 1MHz 頻率。與1.x版本相比,顯著的減少了對電壓和溫度的依賴性。
?
版本3.X
這個版本和35.5k工藝一起引入。
?
擴展振蕩器提供多個頻率,4種不同的 RC 振蕩器,頻率分別是 1, 2, 4 以及 8MHz。這個版本自動載入 1MHz 的校正值。因為有4個不同 RC 振蕩器,所以在簽名中保存了 4 個校正值。如果使用了不是缺省的 1MHz 頻率,OSCCAL 寄存器需要運行時手工加載校正值。
?
版本4.X
版本4.0中只保留了 8MHz 的振蕩器。稍晚一些的 4.x 版本中提供了兩種頻率:4MHz 和 8MHz(ATtiny2313),4.8MHz 和 9.6MHz(ATtiny13)。OSCCAL 寄存器修改為只有 7 位用于調整選擇的頻率,最高位沒有使用。可以自動載入校正值和預分頻時鐘。
?
版本4.X
版本5.0中只有8MHz時鐘,OSCCAL中所有的8位都可以用于調整頻率,可以自動載入校正值和預分頻時鐘。OSCCAL寄存器分為兩個部分,OSCCAL的最高位選擇頻率范圍,后7位用于調整指定的頻率。
?
振蕩器特性
內部 RC 振蕩器的頻率依賴于溫度和工作電壓。圖1顯示了ATmega169 (版本 A 到 E)的 8MHz RC 振蕩器的頻率。如圖所示,頻率隨著溫度而增加,隨著電壓的增加而稍微降低,這個特性隨芯片不同而變化。對于某種具體型號的芯片參考數據手冊。
?
圖1.晶體頻率和變化與溫度和電壓關系(ATmega169)
(MHz)
Vcc(V)
所有帶有可調整振蕩器的芯片都有 OSCCAL 寄存器。增加 OSCCAL 將得到一個稱為“偽單調”(pseudo-monotone)增加的頻率。把它稱為“偽單調”的原因是因為在某些情況下改變 OSCCAL 寄存器的參數將不會增加或減少頻率,但是再次改變就會增加頻率了。換句話說,OSCCAL 寄存器加上 1 可能不增加頻率,但是加上 2 一般都會使頻率增加。這一特點對于搜索最佳校正值很重要。一個偽單調的例子可以從圖2看出,它是 ATmega169 的 8MHz RC 振蕩器的例子。注意到 OSCCAL 寄存器只使用了 7 位(8 位在 ATmega169 修訂版本 F 及以后版本中),這樣 OSCCAL 的最大值是 128。
?
圖2. ATmega169 校正 RC 振蕩器頻率
(MHz)
晶體參數
?
對于所有可以調整的振蕩器,不推薦調整頻率超過指定基本頻率的 10%,因為內部定時是依賴于 RC 振蕩器的。
?
知道了 RC 振蕩器的基本特性,就可以在 10% 的范圍內,在任何工作電壓和環境溫度下,將給定的頻率校正到 +/-1% 的精度。
?
進行校正
這一節分為協議和固件程序兩部分。協議是為了適應任何支持校正的編程工具,如 AVR 的開發工具STK500, AVRISP, JTAGICE 和 JTAGICE mkII,這些工具校正的用法在后面說明。
?
STK500, AVRISP, JTAGICE 和 JTAGICE mkII 目前只支持命令行版本的校正,由 AVR Studio 4.11 SP1 (及以后版本)支持。最新版本的 AVR Studio 可以在 http://www.atmel.com/avr/ 下載。
?
校正協議
校正協議是簡單快速的,以保證可以用于產品中。編程使用的管腳是 ISP 接口或 JTAG 接口(如果有),使其可以用于最終產品中(或PCB)。
?
兩個管腳用于進行校正: ISP 中的 MOSI 和 MISO,或 JTAG 中的 TDI 和 TDO。這里為了簡單只說明 MOSI 和 MISO,TDI 和 TDO 的用法是一樣的。
?
基本概念就是編程器產生校正時鐘(C-clock),單片機使用它作為參考來校正自己的內部 RC 振蕩器。當單片機完成校正后通過 MISO 發送 “OK”信號給編程器。編程器允許 MISO 信號線上拉,而單片機允許 MOSI 信號線上拉,這是為了保證噪聲不影響校正。
?
編程器使用 1024 C-cycles (C-clock 周期)作為溢出時間,校正程序在這個時間內完成
?
校正程序按一下步驟運行:
1.?????? 編程器寫入校正固件程序到單片機中,允許 MISO 上拉,并釋放 reset 信號線。校正時鐘發送到 MOSI 信號線。手表晶體(32.768kHz)的頻率是合適的。
2.?????? 單片機允許 MOSI 內部上拉,并開始監聽 MOSI 上的校正時鐘信號。
3.?????? 當單片機檢測到用于二進制搜索的校正時鐘達到 1% 精度,如果不是需要的參數值,那么就把鄰近值作為結果,并進行驗證
4.?????? 校正值存放到 EEPROM 中(在校正失敗時,忽略這個步驟)。
5.?????? 當成功完成校正后,翻轉 MISO 信號 4 次。在 MOSI 時鐘下降沿時執行 MISO 翻轉 5 到 10 個 CPU 周期(C-clock)。在校正失敗時,不進行這一步。
6.?????? 如果單片機沒有 EESAVE 熔絲,編程器必須取回 EEPROM 中的校正值以便恢復,因為稍后固件程序將被從 Flash 中擦除。如果有 EESAVE 熔絲,就設置這一位,這樣在擦除 Flash 時就不會擦除 EEPROM 了。
必須在運行時從 EEPROM 復制校正參數到 OSCCAL 寄存器,為此需要在最終的固件程序中執行它。
?
校正固件程序
校正代碼是用匯編寫的,對于 AVR Studio 4.11 已經安裝了帶有校正包的匯編。
?
校正固件程序是按照方便修改為任何型號的單片機(表1中)來組織的。同樣,校正的接口也可以被修改。如果使用 AVR 的開發工具,所有需要進行的修改都在文件 “RC_Calibration.asm”中。
?
文件包括下面內容:
1.?? 指定芯片文件(選擇和你的系統對應的),如 “m16.asm”是 Atmega16 的。芯片指定文件包括下面內容:
a.?????? AVR Studio 的寄存器和位定義。
b.?????? 定義的內存映射文件,指定代碼的位置和存放在 EEPROM 的校正數據的位置。
c.???????? OSCCAL 訪問的宏,控制怎樣對 OSCCAL 寄存器進行訪問。訪問 OSCCAL 寄存器的方法與 IO 文件和 OSCCAL 寄存器的位置有關。
d.?????? 振蕩器版本文件。這個文件定義了二進制搜索的初始化步驟,因為一些 OSCCAL 寄存器是 7 位,另外的是 8 位的。
e.?????? 返回堆棧初始化宏文件。一些芯片有硬件堆棧,另外的使用軟件堆棧,需要進行初始化。
f.?????? 端口訪問宏文件,定義了怎樣訪問與校正相關的端口的相關寄存器。需要這個文件是因為一些寄存器在 IO 文件的高端部分,而其它的在低端部分。
g.?????? 重定義位和寄存器名。
請注意使用 ATmega169 修訂版F 的芯片時需要修改芯片的特殊文件,在“m169.asm”文件中振蕩器版本要設置成 5。
2.?? 校正接口文件。這個文件指定使用 ISP 或 JTAG 端口,以及使用的管腳名。校正時鐘頻率也在這里指定。
3.?? 包含使用宏定義的文件 - “macros.inc”。
4.?? 公共的校正代碼文件 “main.asm”。
校正代碼的結構是按照易于修改而設計的,可以更簡單的適應目標系統的單片機和接口。此外,廣泛使用了宏定義保證了代碼可以只要最小的改動。最后,芯片和校正接口的設計使得只需很小的改動就可以支持新的器件。
?
二進制搜索算法
這個搜索是基于二進制搜索的, a divide-and-conquer method:
1.??? OSCCAL 寄存器載入初始值,就是 OSCCAL 最大值的一半。OSCCAL 的初始值在初始化步驟中定義了。
2.??? 系統時鐘頻率和外部參考進行比較,校正時鐘:
a.?????? 如果頻率精度在 1% 之內,跳到第5步。
b.?????? 如果系統時鐘太快,就減少 OSCCAL 的值;如果時鐘太慢,就增加。跳到第3步。
3.??? 步進值修改為以前的一半
a.?????? 如果步進值達到0,二進制搜索失敗,跳到第4步。
b.?????? 如果步進值大于0,在當前的 OSCCAL 上加或減去步進值,重復第2步。
4.??? 測試與 OSCCAL 最鄰近的 4 個點,這是為了補償振蕩器頻率的偽單調性。
a.?????? 如果測試后 OSCCAL 的參數滿足精度要求,跳轉到第5步。
b.?????? 如果沒有一個點滿足要求,MISO 保持低電平表示校正失敗。
5.??? 存儲校正值到 EEPROM。
6.??? MISO 翻轉4次表示校正頻率成功。
?
決定振蕩器頻率的方法
在校正時鐘 (C-clock) 和內部 RC 振蕩器之間的比較使用了 8位定時器/計數器0 (TC0),使用8位定時器是因為它在所有的帶有可調 RC 振蕩器的單片機中都有。計時40個 C-clock 周期cycles 然后比較定時器計數, C-frequency 在接口文件中指定。決定頻率的方法在流程圖中說明了。
?
圖3. 決定振蕩器頻率方法的流程圖
?
為了覆蓋到振蕩器頻率的整個范圍,從 1MHz 到 9.6MHz,通過檢查 TC0 溢出標志(OVF) 來擴展定時器,得到了一個16位定時器。OVF 標志每半個周期(Cclock)檢查一次,可以充分保證檢查到所有的 TC0 OVF 標志。因為使用 16位定時器的關系,最差的情況是在 9.6MHz 時,OSCCAL 寄存器載入 0xFF。在這個情況下,振蕩器能 100%? 高于指定頻率,定時器計數到 23,541,在16位計數范圍中。
?
從另外一個方面看,最低的振蕩器頻率也必須被考慮。最低可以得到的頻率是寫入 0x00 到 OSCCAL 寄存器時,此時頻率可能低于指定頻率的 50%。因為 TC0 OVF 標志位每半個周期檢查一次,只有不超過7個CPU周期來處理 OVF 標志位以及檢測 C-clock 沿 –在指定的 1MHz 頻率下。當 OVF 標志位沒有設置時會遇到這個時間約束,而設置標志位需要 8 個周期,這樣當檢測時間時將引起一個小錯誤,不過不影響最后的結果:振蕩器被判斷為太慢。
?
這些極端一般不會遇到,但是需要考慮到它們。
?
?
修正時間錯誤
因為不能使用中斷來檢測 C-clock 的沿,只能使用輪詢法。這樣的結果是檢測可能會有 2 個CPU 周期的延時,使校正可能失敗。為了補償這個時間誤差,收縮門限 2 個 ticks (2 個CPU周期)。
?
所有參數和門限的計算由單片機完成,使用了 32 位精度(在AVRASM中)或 64 位精度(在 AVRASM2中)。
?
校正固件程序不能用于校正時鐘源,參考這篇文檔 “校正時鐘精度”的小節。
?
使用STK500,AVRISP,JTAGICE或JTAGICE mkII進行校正
校正固件的源碼和批處理文件是作為怎樣使用 STK500, AVRISP, JTAGICE 或 JTAGICE mkII 進行校正的例子來提供的。固件幾乎不需要就可以用于其它校正系統上。
?
編譯校正固件
校正固件的主程序是 RC_Calibration.asm。這個文件需要在AVR Studio中添加到一個匯編工程里。在這個文件中指定了單片機型號和使用的校正接口:STK500, AVRISP, JTAGICE 或 JTAGICE mkII。甚至還可以指定校正的精度。
?
一旦修改這些選項,編譯工程產生一個二進制文件 “rc_calib.hex”,就是使用這個文件進行校正。
?
注意正確設置熔絲很重要:如果選擇了 1MHz RC 振蕩器,就不能校正為單片機 8MHz。
?
使用命令行工具
STK500, AVRISP, JTAGICE 和 JTAGICE mkII 目前只支持以命令行方式調用的工具 (AVR Studio 4.11 SP1 及以后版本)。提供這種支持的軟件包可以在http://www.atmel.com/avr/中查找到。
?
軟件包中包括了校正需要的新固件程序。當第一次連接到AVR Studio時固件自動進行更新,或者按照AVR Studio幫助文件中的說明進行手工更新。
?
單獨提供了3個批處理文件,這些文件展示了怎樣使用命令行工具編程校正代碼到用戶系統,執行校正和用最終的固件再編程。批處理文對 ATmega16 通過 STK500 或 ISP, JTAGICE 和 JTAGICE mkII 分別進行校正。請研究這些批處理文件和 AVR Studio 幫助來了解 STK500/ISP, JTAGICE 和 JTAGICE mkII 命令行工具的用法。表2 包括了新命令列表。
?
表2. stk500.exe 和 jtagice.exe 新選項
命令 說明
-Z[addr] 從EEPROM讀取校正字節,addr是讀取的地址。讀取操作在芯片擦除命令前執行,使用 “-S#”將在芯片擦除后重新寫入參數到flash或EEPROM中。
-Y 按次序執行校正,這個命令不考慮其它所有操作。如果沒有獲得響應信號,返回錯誤級別1。
?
支持新型號
為了支持新型號的器件,所需要的就是復制一個類似的設備文件(最好引腳兼容),并修改新型號的特點。下面步驟用ATmega8535為例顯示了這一過程:
1.??? 復制引腳和功能兼容的設備文件。
ATmega8535 和 ATmega16 引腳兼容,但是 ATmega8535 沒有 JTAG 接口。復制文件 “m16.asm”并改名為 “m8535.asm”。
2.??? 修改寄存器和位定義文件,以適合新的型號。
對于 ATmega8535 定義寄存器和位變量的文件是 “m8535.inc”。
3.??? 修改引腳輸出描述文件以適合新器件。
因為 ATmega8535 沒有 JTAG 接口,修改引腳輸出文件為 “s8535_family_pinout.inc”。
4.??? 修改新型號器件對應的振蕩器版本文件。
5.??? 在 RC_Calibration 文件中添加新器件到設備列表。
對程序進行編譯驗證是否正確。如果錯誤,一般都是因為修改了寄存器或位變量名、端口、引腳或者定時器引起的。
?
固件的性能
代碼有如下特點:整個校正運行相當快速,其性能依賴于校正固件的大小和完成校正的時間。校正固件有 183 到 240 個字節,與用戶系統和使用的接口有關。固件編程需要的時間非常短。
?
校正程序完成時間少于 1024 個校正周期,最短時間與二進制搜索搜索速度和寫EEPPROM時間有關。目前,使用 STK500.exe 或 JTAGICE.exe,校正時間少于 32ms。
?
校正時鐘精度
校正的精度高度依賴于外部校正時鐘。由 AVR 工具產生的校正時鐘的頻率可能發生變化,所以要測量出使用的準確頻率并輸入到接口源文件中。因為振蕩器與工作電壓和溫度都有關,校正頻率要在相同的條件下進行測量。
?
快速開始指南
參考下面的步驟:
1.?????? 下載并解壓 AVR053 的源代碼(可以放在任何位置,這里寫為 \AVR053\)。
2.?????? 從http://www.atmel.com/avr/下載并安裝 AVR Stdio 4.11 SP1。
3.?????? 打開 AVR Studio,創建新工程”rc_calib”,并添加源文件 RC_Calibration.asm 到工程中。
4.?????? 在RC_Calibration.asm中選擇用戶系統的單片機(添加或刪除設備行前面的分號)。
5.?????? 選擇接口,和選擇單片機一樣。
6.?????? 使用頻率計測量出校正時鐘的頻率。這個信號在STK500/AVRISP 的MOSI 引腳,或者 JTAG ICE的TDI引腳。在接口文件的行 ”.EQU CALIB_CLOCK_FREQ = XXXX” 中修改頻率。
7.?????? 指定用戶系統期望的頻率和精度。注意精度太高會可能校正失敗,參考數據手冊查看可能達到的精度。
8.?????? 編譯工程產生 hex 二進制文件。
9.?????? 如果使用 STK500/AVRISP 進行校正:
a.?????? 在文本編輯器中打開批處理文件 ”\AVR053\AVR Asm\Batch file\ISP_rc_calib.bat” (使用命令行 STK500.exe -h 查看相關參數的信息)。
b.?????? 編輯文件,對應使用的單片機型號。修改 -datmega16 參數為 -d[用戶型號]。
c.?????? 修改熔絲設置,確定熔絲設置是校正需要的:選擇 8MHz 內部 RC 如果需要校正單片機到 8MHz。熔絲設置通過參數 -E(擴展熔絲)和 -f(高/低熔絲)設置。確認熔絲設置中看門狗定時器總是關閉。
d.?????? 如果 AVR Studio 的安裝路徑和批處理文件的不同(標準英文 Windows 版本),請修改 stk500.exe 的路徑。
e.?????? 保存文件。
10.??? 如果使用 JTAGICE 校正:請注意復位必須可用。
a.?????? 打開文件 ”\AVR053\AVR Asm\Batch file\JTAGICE_rc_calib.bat”(使用命令行方式jtagice.exe -h 查看詳細參數)。
b.?????? 編輯文件,修改單片機型號,修改 -datmega16 參數為 -d[用戶型號]。
c.?????? 修改熔絲設置。確定熔絲設置是正確的:如果校正單片機到 8MHz 就選擇 8MHz 內部 RC 振蕩器。熔絲設置通過參數 -E(擴展熔絲)和 -f(高/低熔絲)設置。確認熔絲設置中看門狗定時器總是關閉。
d.?????? 如果 AVR Studio 的安裝路徑不同于批處理文件(標準英文 Windows 版本),請修改jtagice.exe 的路徑。
e.?????? 保存文件。
11.??? 如果使用 JTAGICE mkII 進行校正:請注意復位可用
a.?????? 打開文件 ”\AVR053\AVR Asm\Batch file\JTAGICE_mkII_rc_calib.bat”(使用命令行方式 jtagiceii.exe -h 查看詳細參數設置)。
b.?????? 編輯文件,修改單片機型號,修改 -datmega16 參數為 -d[用戶型號]。
c.?????? 修改熔絲設置。確定熔絲設置是正確的:如果校正單片機到 8MHz 就選擇 8MHz 內部 RC 振蕩器。熔絲設置通過參數 -E(擴展熔絲)和 -f(高/低熔絲)設置。確認熔絲設置中看門狗定時器總是關閉。
d.?????? 如果 AVR Studio 的安裝路徑不同于批處理文件(標準英文 Windows 版本),請修改jtagiceii.exe 的路徑。
e.?????? 保存文件。
12.??? 連接 STK500, AVRISP, JTAGICE 或 JTAGICE mkII 到用戶板,并給它們上電。檢查串口線與計算機連接好。
13.??? 打開 windows 的 DOS 方式,切換到目錄 ”\AVR053\AVR Asm\Batch file\”。執行批處理文件(ISP_rc_calib.bat, JTAGICE_rc_calib.bat 或 JTAGICE_mkII_rc_calib.bat)。
14.??? 等待校正完成。
?
批處理文件也可以修改為在校正后編程自定義的固件代替 test.hex。要清楚新的校正值要在運行時由固件載入 OSCCAL 寄存器。
評論
查看更多