此例將使用 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 |
參考資料: