天天看點

關于avr熔絲位的學習

之前在學校隻學過51系列的單片機,當然對于如今的很多系統,用51單片機已經不能滿足系統的需求了,包括 處理速度,定時/計數器,IO口等。最近公司要做個智能遙控器系統,經過選擇和論證,決定采用Atmega88PA-AU的晶片。設計好原理圖,PCB闆,等闆子到了,就迫不及待想試試。

由于Atmega88PA-AU(以下簡稱avr88)沒有Jtag口,是以隻能用debugWire,當然就隻能買MKII的調試器(挺貴的,不過都是公司的錢)。由于對于熔絲位不太懂,是以不敢輕舉妄動,寫好程式後,點選了program,诶!不錯,下進去了,沒問題!于是乎信心大增,開始大膽把dwen勾上了,點選program,結果悲劇了,彈出對話框(一堆英文,意思是說複位線被占用),看來真悲劇了,一片晶片被鎖了,貌似還隻能用高壓程式設計解鎖了。這樣一來又要買高壓程式設計器,測試座(由于是貼片的),公司肯定不敢啦!之前為了系統測試,還特定加了複位電路,想不到現在竟成了絆腳石,那沒有辦法,隻能重新焊上一塊晶片,然後把複位電路拆了,重新調熔絲位,就OK啦!初學avr,沒辦法,總得費幾塊片子的,是以還是得大膽的測。不過得先看懂文檔來,不然盲目測,公司肯定吃不消!

關于avr熔絲位的學習

以下是熔絲位(轉載自http://www.fxdzw.com/dpj/avr_rsw.htm)

要想使MCU功耗最小也要了解一些位的設定。

1:未程式設計  

0:程式設計 

1、BOD(Brown-out Detection) 掉電檢測電路 

BODLEVEL(BOD電平選擇): 1: 2.7V電平; 0:4.0V電平 

BODEN(BOD功能控制): 1:BOD功能禁止;0:BOD功能允許  

    使用方法:如果BODEN使能(複選框選中)啟動掉電檢測,則檢測電平由BODLEVEL決定。一旦VCC下降到觸發電平(2.7v或4.0v)以下,MCU複位;當VCC電平大于觸發電平後,經過tTOUT 延時周後重新開始工作。             

因為M16L可以工作在2.7v~5.5v,是以觸發電平可選2.7v(BODLEVEL=1)或4.0v(BODLEVEL=0);而M16工作在4.5~5.5V,是以隻能選BODLEVEL=0,BODLEVEL=1不适用于ATmega16。 

2、複位啟動時間選擇 

SUT 1/0:  當選擇不同晶振時,SUT有所不同。 

    如果沒有特殊要求推薦SUT 1/0設定複位啟動時間稍長,使電源緩慢上升。

3、CKSEL3/0: 時鐘源選擇(時鐘總表) 

時鐘總表:   

 時鐘源                                 啟動延時                    熔絲 

外部時鐘                               6 CK + 0 ms            CKSEL=0000 SUT="00" 

外部時鐘                               6 CK + 4.1 ms          CKSEL=0000 SUT="01" 

外部時鐘                               6 CK + 65 ms           CKSEL="0000" SUT="10" 

内部RC振蕩1MHZ                         6 CK + 0 ms            CKSEL="0001" SUT="00" 

内部RC振蕩1MHZ                         6 CK + 4.1 ms          CKSEL="0001" SUT="01" 

内部RC振蕩1MHZ1                        6 CK + 65 ms           CKSEL="0001" SUT="10" 

内部RC振蕩2MHZ                         6 CK + 0 ms            CKSEL="0010" SUT="00" 

内部RC振蕩2MHZ                         6 CK + 4.1 ms          CKSEL="0010" SUT="01" 

内部RC振蕩2MHZ                         6 CK + 65 ms           CKSEL="0010" SUT="10" 

内部RC振蕩4MHZ                         6 CK + 0 ms            CKSEL="0011" SUT="00" 

内部RC振蕩4MHZ                         6 CK + 4.1 ms          CKSEL="0011" SUT="01" 

内部RC振蕩4MHZ                         6 CK + 65 ms           CKSEL="0011" SUT="10" 

内部RC振蕩8MHZ                         6 CK + 0 ms            CKSEL="0100" SUT="00" 

内部RC振蕩8MHZ                         6 CK + 4.1 ms          CKSEL="0100" SUT="01" 

内部RC振蕩8MHZ                         6 CK + 65 ms           CKSEL="0100" SUT="10" 

外部RC振蕩≤0.9MHZ                     18 CK + 0 ms           CKSEL="0101" SUT="00" 

外部RC振蕩≤0.9MHZ                     18 CK + 4.1 ms         CKSEL="0101" SUT="01" 

外部RC振蕩≤0.9MHZ                     18 CK + 65 ms          CKSEL="0101" SUT="10" 

外部RC振蕩≤0.9MHZ                     6 CK + 4.1 ms          CKSEL="0101" SUT="11" 

外部RC振蕩0.9-3.0MHZ                   18 CK + 0 ms           CKSEL="0110" SUT="00" 

外部RC振蕩0.9-3.0MHZ                   18 CK + 4.1 ms         CKSEL="0110" SUT="01" 

外部RC振蕩0.9-3.0MHZ                   18 CK + 65 ms          CKSEL="0110" SUT="10" 

外部RC振蕩0.9-3.0MHZ                   6 CK + 4.1 ms          CKSEL=0110 SUT="11" 

外部RC振蕩3.0-8.0MHZ                   18 CK + 0 ms           CKSEL=0111 SUT="00" 

外部RC振蕩3.0-8.0MHZ                   18 CK + 4.1 ms         CKSEL="0111" SUT="01" 

外部RC振蕩3.0-8.0MHZ                   18 CK + 65 ms          CKSEL=0111 SUT="10" 

外部RC振蕩3.0-8.0MHZ                   6 CK + 4.1 ms          CKSEL="0111" SUT="11" 

外部RC振蕩8.0-12.0MHZ                  18 CK + 0 ms           CKSEL=1000 SUT="00" 

外部RC振蕩8.0-12.0MHZ                  18 CK + 4.1 ms         CKSEL="1000" SUT="01" 

外部RC振蕩8.0-12.0MHZ                  18 CK + 65 ms          CKSEL="1000" SUT="10" 

外部RC振蕩8.0-12.0MHZ                  6 CK + 4.1 ms          CKSEL="1000" SUT="11" 

低頻晶振(32.768KHZ)                    1K CK + 4.1 ms         CKSEL="1001" SUT="00" 

低頻晶振(32.768KHZ)                    1K CK + 65 ms          CKSEL="1001" SUT="01" 

低頻晶振(32.768KHZ)                    32K CK + 65 ms         CKSEL="1001" SUT="10" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        258 CK + 4.1 ms        CKSEL="1010" SUT="00" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        258 CK + 65 ms         CKSEL="1010" SUT="01" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        1K CK + 0 ms           CKSEL=1010 SUT="10" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        1K CK + 4.1 ms         CKSEL="1010" SUT="11" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        1K CK + 65 ms          CKSEL="1011" SUT="00" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        16K CK + 0 ms          CKSEL=1011 SUT="01" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        16K CK + 4.1ms         CKSEL="1011" SUT="10" 

低頻石英/陶瓷振蕩器(0.4-0.9MHZ)        16K CK + 65ms          CKSEL="1011" SUT="11" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        258 CK + 4.1 ms        CKSEL="1100" SUT="00" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        258 CK + 65 ms         CKSEL="1100" SUT="01" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        1K CK + 0 ms           CKSEL=1100 SUT="10" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        1K CK + 4.1 ms         CKSEL="1100" SUT="11" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        1K CK + 65 ms          CKSEL="1101" SUT="00" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        16K CK + 0 ms          CKSEL="1101" SUT="01" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        16K CK + 4.1ms         CKSEL="1101" SUT="10" 

中頻石英/陶瓷振蕩器(0.9-3.0MHZ)        16K CK + 65ms          CKSEL="1101" SUT="11" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        258 CK + 4.1 ms        CKSEL="111"0 SUT="00" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        258 CK + 65 ms         CKSEL="111"0 SUT="01" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        1K CK + 0 ms           CKSEL="111"0 SUT="10" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        1K CK + 4.1 ms         CKSEL="111"0 SUT="11" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        1K CK + 65 ms          CKSEL="1111" SUT="00" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        16K CK + 0 ms          CKSEL="1111" SUT="01" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        16K CK + 4.1ms         CKSEL="111"1 SUT="10" 

高頻石英/陶瓷振蕩器(3.0-8.0MHZ)        16K CK + 65ms          CKSEL="1111" SUT="11" 

高位(BOOT區設定): 

1、 JTAGEN(JTAG允許):

1:JTAG禁止;

0:JTAG允許  

    OCDEN(OCD功能允許):

1:OCD功能禁止;

0:OCD功能允許  

注:OCDEN(On-chip Debug):片上調試使能位 

    JTAGEN(JTAG使能): JTAG測試通路端口 

    使用方法:在JTAG調試時,使能OCDEN JTAGEN兩位(複選框打勾),并保持所有的鎖定位處于非鎖定狀态;在實際使用時為降低功耗,不使能OCDEN JTAGEN,大約減少2-3mA的電流。 

2、 SPIEN(SPI下載下傳允許):  

1:SPI下載下傳禁止;

0:SPI下載下傳使能 

注:在ISP的軟體裡,SPIEN是不能編輯的,預設為0。 

3、 CKOPT(選擇放大器模式):

CKOPT=0:高幅度振蕩輸出;

CKOPT=1:低幅度振蕩輸出    

    當CKOPT 被程式設計時振蕩器在輸出引腳産生滿幅度的振蕩。這種模式适合于噪聲環境,以及需要通過XTAL2 驅動第二個時鐘緩沖器的情況,而且這種模式的頻率範圍比較寬。當保持CKOPT 為未程式設計狀态時,振蕩器的輸出信号幅度比較小。其優點是大大降低了功耗,但是頻率範圍比較窄,而且不能驅動其他時鐘緩沖器。

對于諧振器,當CKOPT未程式設計時的最大頻率為8 MHz,CKOPT程式設計時為16 MHz。内部RC振蕩器工作時不對CKOPT程式設計。 

4、EEAVE(燒錄時EEPROM資料保留):  

1:不保留;

0:保留 

5、BOOTRST(複位入口選擇):  

1:程式從0x0000位址開始 

0:複位後  

    從BOOT區執行(參考BOOTSZ0/1) 

6、BOOTSZ 1/0(引導區程式大小及入口):   

00: 1024Word/0xc00;  

01: 512Word/0xe00;  

10: 256Word/0xf00;  

11: 128Word/0xf80

繼續閱讀