AVR硬件設計(內含最小系統電路圖)
最小系統:
本文引用地址:http://www.ex-cimer.com/article/201810/393512.htm采用了在ATmega16引腳XTAL1和XTAL2上外接由石英晶體和電容組成的諧振回路,并配合片內的OSC(Oscillator)振蕩電路構成的振蕩源作為系統時鐘源的。更簡單的電路是直接使用片內的4M的RC振蕩源,這樣就可以將C1、C2、R2和4M晶體省掉,引腳XTAL1和XTAL2懸空,當然此時系統時鐘頻率精準度不如采用外部晶體的方式,而且也易受到溫度變化的影響。
AVR的復位源和復位方式:
復位是單片機芯片本身的硬件初始化操作,例如,單片機在上電開機時都需要復位,以便CPU以及其它內部功能部件都處于一個確定的初始狀態,并從這個初始狀態開始工作。
AVR單片機的復位操作,其主要功能是把程序計數器PC初始化為$0000(指非BOOT LOAD方式啟動),使單片機從$0000單元開始執行程序。同時決大部分的寄存器(通用寄存器和I/O寄存器)也被復位操作清零。
ATmega16單片機共有5個復位源,它們是:
1、上電復位。當系統電源電壓低于上電復位門限Vpot時,MCU復位。
2、外部復位。當外部引腳RESET為低電平,且低電平持續時間大于1.5us時,MCU復位。
3、掉電檢測(BOD)復位。BOD使能時,且電源電壓低于掉電檢測復位門限(4.0v或2.7v)時,MCU復位。
4、看門狗復位。WDT使能時,并且WDT超時溢出時,MCU復位。
5、JTAG AVR復位。當使用JTAG接口時,可由JTAG口控制MCU復位。
AVR復位啟動后,由于程序計數器PC置為$0000,因此CPU取出的第一條指令就是在Flash空間的$0000處,即復位后系統程序從地址$0000處開始執行(指非BOOT LOAD方式啟動)。通常在$0000地址中放置的指令為一條相對轉移指令RJMP或JMP指令,跳到主程序的開始。這樣,系統復位啟動后,首先執行$0000處的跳轉指令,然后轉到執行主程序的指令。
AVR內部的MCU控制和狀態寄存器MCUCSR還將引起復位的復位源進行了記錄,用戶程序啟動后,可以讀取MCUCSR中的標記,查看復位是由于何種情況造成的,是正常復位還是異常復位,從而根據實際情況執行不同的程序,實現不同的處理。
對AVR的編程下載:串行編程方式(ISP)。
mega16的熔絲位:
ATmega16單片機在售出時,片內的Flash 存儲器和EEPROM 存儲器陣列是處在擦除的狀態(即內容 = $FF),且可被編程。同時其器件配置熔絲位的缺省值為使用內部1M的RC振蕩源作為系統時鐘!
1.存儲器加密鎖定位
ATmage16有2個加密鎖定位LB1和LB2,用于設定對片內存儲器的加密方式,用戶可在編程方式下,對LB1、LB2不編程(1),或編程(0),從而獲得對片內存儲器不同的加密保護方式,見表2.3。
需要進一步說明是:
在AVR的器件手冊中,使用已編程(Programmed)和未編程(Unprogrammed)定義加密位和熔絲位的狀態?!癠nprogrammed”表示熔絲狀態為“1”(禁止),“Programmed”表示熔絲狀態為“0”(允許),即
1:未編程
0:編程
AVR的加密位和熔絲位可多次編程,不是OPT熔絲。
AVR芯片加密鎖定后(LB2/LB1 = 1/0,0/0),在外部不能通過任何方式讀取芯片內部Flash和EEPROM中的數據,但熔絲位的狀態仍然可以讀取,不能修改配置。
需要重新下載程序時,或芯片被加密鎖定后,或發現熔絲位配置不對,都必須先在編程狀態使用芯片擦除命令,清除芯片內部存儲器中的數據,同時解除加密鎖定。然后重新下載運行代碼和數據,修改和配置相關的熔絲位,最后再次配置芯片的加密鎖定位。
編程狀態的芯片擦除命令是將Flash和EEPROM中的數據清除,并同時將兩位鎖定位狀態配置成無鎖定狀態(LB2/LB1 = 1/1)。但芯片擦除命令并不改變其它熔絲位的狀態。
下載編程的正確的操作程序是:在芯片無鎖定狀態下,下載運行代碼和數據,配置相關的熔絲位,最后配置芯片的加密鎖定位。
2.系統時鐘類型的配置
ATmega16可以使用多種類型的系統時鐘源,最常用的為2種:使用內部的RC振蕩源(1M/2M/4M/8M)和外接晶體(晶體可在0-16MHz之間選擇)配合內部振蕩放大器構成的振蕩源。具體系統時鐘類型的配置由CKOPT和CKSEL[3-0]共5個熔絲設定,表2.4、表2.5給出了具體的配置值。用戶在使用中,首先要根據實際使用情況進行正確的設置,而且千萬注意不要對這些熔絲位誤操作!
在表2.5中,當CKOPT = 0時,振蕩器的輸出振幅較大,容易起振,適合在干擾大的場合以及使用的晶體超過8M時的情況下使用。而CKOPT = 1時,振蕩器的輸出振幅較小,這樣可以減小對電源的消耗,對外的電磁幅射也較小。
尤其需要說明的是,一旦RESET腳的電平被外部拉低,當滿足某些特殊條件后,芯片將進入編程狀態。例如,如果芯片帶有SPI接口,支持SPI串行編程,則通過以下方式將使芯片進入SPI編程狀態:
外部將SPI口的SCK引腳拉低,然后外部在RESET引腳上施加一個至少為2個系統周期以上低電平脈沖;
延時等待20ms后,由外部通過AVR的SPI口向芯片下發允許SPI編程的指令;
如果外圍連接在上電情況時表現為強上拉或強下拉(最極端情況為接高電平或GND),那么為了保證AVR的SPI功能的正常工作,應該如圖2-20中所示,串入3個隔離電阻,阻值在2K左右。
AVR熔絲位的配置:
對于剛開始學習使用AVR的讀者,建議改變的熔絲位有:
系統時鐘采用內部4M的RC振蕩源。其優點是速度適中,且應用于RS-232通信時,分頻產生的9600bps速率與標準值的誤差最小(0.2%)。
禁止片內的JTAG口功能。不使用JTAG在線仿真,將4個引腳PC2-PC5釋放,作為普通的I/O使用。
啟用低電壓檢測復位功能。檢測電平設置為4.0V。
評論