此例將使用 ATmega16 外接一個 16MHZ 的振盪器,並設定相關的 Fuse Bits,使其使用外部振盪器進行工作。

 

電路:

ATmega16 提供了以下 5 種 System Clock 設定方式,在出廠時,Atmel 會將晶片設為使用 Calibrated Internal RC Oscillator(使用內部 RC 振盪方式),頻率為 1MHz,所以無須接上外部的振盪器,即可工作。而此例將會外接一個16MHz的振盪器,主要使用外部振盪器(External Crystal)的方式進行工作。

 

 

要將 System Clock 設為使用外部的振盪器(16MHz),可以參考下表,我們需要將 CKOPT設為 0,CKSEL1、CKSEL2、CKSEL3則可以設為 101、110、111 其中一組數值(16MHz>=1MHz),此例我們將把 CKSEL1、CKSEL2、CKSEL3設為111。

 

 

接下來還需要設定 CKSEL0與SUT0、SUT1,通常設定開始時間(16CK+65ms)都會設成最長的時間,依照下表所示,會將CKSEL0 設為 1,SUT0、SUT1則會設為 11。

 

 

我們依照上述要設定以下參數,其餘數值則填入預設值

 

CKOPT=0

CKSEL0=1

CKSEL1=1

CKSEL2=1

CKSEL3=1

SUT0=1

SUT1=1

 

參考下表我們得到以下數值

hfuse 10001001 0x89

lfuse 11111111 0xFF

 

 

最後使用 avrdude寫入Fuse(寫入時請務必小心,寫入錯誤數值可能造成 ATmega16 無法使用)

avrdude -p atmega16 -cstk500v1 -P\\.\COM5 -b19200  -Uhfuse:w:0x89:m -Ulfuse:w:0xff:m


 

參考資料:

http://treehouseprojects.ca/fusebits/

http://www.ladyada.net/learn/avr/fuses.html

arrow
arrow
    全站熱搜

    iammic 發表在 痞客邦 留言(0) 人氣()