新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR硬件設計(內(nèi)含最小系統(tǒng)電路圖)

AVR硬件設計(內(nèi)含最小系統(tǒng)電路圖)

作者: 時間:2018-10-29 來源:網(wǎng)絡 收藏

  

本文引用地址:http://www.butianyuan.cn/article/201810/393512.htm

  采用了在ATmega16引腳XTAL1和XTAL2上外接由石英晶體和電容組成的諧振回路,并配合片內(nèi)的OSC(Oscillator)振蕩電路構成的振蕩源作為系統(tǒng)時鐘源的。更簡單的電路是直接使用片內(nèi)的4M的RC振蕩源,這樣就可以將C1、C2、R2和4M晶體省掉,引腳XTAL1和XTAL2懸空,當然此時系統(tǒng)時鐘頻率精準度不如采用外部晶體的方式,而且也易受到溫度變化的影響。

  的復位源和復位方式:

  復位是單片機芯片本身的硬件初始化操作,例如,單片機在上電開機時都需要復位,以便CPU以及其它內(nèi)部功能部件都處于一個確定的初始狀態(tài),并從這個初始狀態(tài)開始工作。

  單片機的復位操作,其主要功能是把程序計數(shù)器PC初始化為$0000(指非BOOT LOAD方式啟動),使單片機從$0000單元開始執(zhí)行程序。同時決大部分的寄存器(通用寄存器和I/O寄存器)也被復位操作清零。

  ATmega16單片機共有5個復位源,它們是:

  1、上電復位。當系統(tǒng)電源電壓低于上電復位門限Vpot時,MCU復位。

  2、外部復位。當外部引腳RESET為低電平,且低電平持續(xù)時間大于1.5us時,MCU復位。

  3、掉電檢測(BOD)復位。BOD使能時,且電源電壓低于掉電檢測復位門限(4.0v或2.7v)時,MCU復位。

  4、看門狗復位。WDT使能時,并且WDT超時溢出時,MCU復位。

  5、JTAG 復位。當使用JTAG接口時,可由JTAG口控制MCU復位。

  AVR復位啟動后,由于程序計數(shù)器PC置為$0000,因此CPU取出的第一條指令就是在Flash空間的$0000處,即復位后系統(tǒng)程序從地址$0000處開始執(zhí)行(指非BOOT LOAD方式啟動)。通常在$0000地址中放置的指令為一條相對轉(zhuǎn)移指令RJMP或JMP指令,跳到主程序的開始。這樣,系統(tǒng)復位啟動后,首先執(zhí)行$0000處的跳轉(zhuǎn)指令,然后轉(zhuǎn)到執(zhí)行主程序的指令。

  AVR內(nèi)部的MCU控制和狀態(tài)寄存器MCUCSR還將引起復位的復位源進行了記錄,用戶程序啟動后,可以讀取MCUCSR中的標記,查看復位是由于何種情況造成的,是正常復位還是異常復位,從而根據(jù)實際情況執(zhí)行不同的程序,實現(xiàn)不同的處理。

  對AVR的編程下載:串行編程方式(ISP)。

  mega16的熔絲位:

  ATmega16單片機在售出時,片內(nèi)的Flash 存儲器和EEPROM 存儲器陣列是處在擦除的狀態(tài)(即內(nèi)容 = $FF),且可被編程。同時其器件配置熔絲位的缺省值為使用內(nèi)部1M的RC振蕩源作為系統(tǒng)時鐘!

  1.存儲器加密鎖定位

  ATmage16有2個加密鎖定位LB1和LB2,用于設定對片內(nèi)存儲器的加密方式,用戶可在編程方式下,對LB1、LB2不編程(1),或編程(0),從而獲得對片內(nèi)存儲器不同的加密保護方式,見表2.3。

  需要進一步說明是:

  在AVR的器件手冊中,使用已編程(Programmed)和未編程(Unprogrammed)定義加密位和熔絲位的狀態(tài)?!癠nprogrammed”表示熔絲狀態(tài)為“1”(禁止),“Programmed”表示熔絲狀態(tài)為“0”(允許),即

  1:未編程

  0:編程

  AVR的加密位和熔絲位可多次編程,不是OPT熔絲。

  AVR芯片加密鎖定后(LB2/LB1 = 1/0,0/0),在外部不能通過任何方式讀取芯片內(nèi)部Flash和EEPROM中的數(shù)據(jù),但熔絲位的狀態(tài)仍然可以讀取,不能修改配置。

  需要重新下載程序時,或芯片被加密鎖定后,或發(fā)現(xiàn)熔絲位配置不對,都必須先在編程狀態(tài)使用芯片擦除命令,清除芯片內(nèi)部存儲器中的數(shù)據(jù),同時解除加密鎖定。然后重新下載運行代碼和數(shù)據(jù),修改和配置相關的熔絲位,最后再次配置芯片的加密鎖定位。

  編程狀態(tài)的芯片擦除命令是將Flash和EEPROM中的數(shù)據(jù)清除,并同時將兩位鎖定位狀態(tài)配置成無鎖定狀態(tài)(LB2/LB1 = 1/1)。但芯片擦除命令并不改變其它熔絲位的狀態(tài)。

  下載編程的正確的操作程序是:在芯片無鎖定狀態(tài)下,下載運行代碼和數(shù)據(jù),配置相關的熔絲位,最后配置芯片的加密鎖定位。

  2.系統(tǒng)時鐘類型的配置

  ATmega16可以使用多種類型的系統(tǒng)時鐘源,最常用的為2種:使用內(nèi)部的RC振蕩源(1M/2M/4M/8M)和外接晶體(晶體可在0-16MHz之間選擇)配合內(nèi)部振蕩放大器構成的振蕩源。具體系統(tǒng)時鐘類型的配置由CKOPT和CKSEL[3-0]共5個熔絲設定,表2.4、表2.5給出了具體的配置值。用戶在使用中,首先要根據(jù)實際使用情況進行正確的設置,而且千萬注意不要對這些熔絲位誤操作!

  在表2.5中,當CKOPT = 0時,振蕩器的輸出振幅較大,容易起振,適合在干擾大的場合以及使用的晶體超過8M時的情況下使用。而CKOPT = 1時,振蕩器的輸出振幅較小,這樣可以減小對電源的消耗,對外的電磁幅射也較小。

  尤其需要說明的是,一旦RESET腳的電平被外部拉低,當滿足某些特殊條件后,芯片將進入編程狀態(tài)。例如,如果芯片帶有SPI接口,支持SPI串行編程,則通過以下方式將使芯片進入SPI編程狀態(tài):

  外部將SPI口的SCK引腳拉低,然后外部在RESET引腳上施加一個至少為2個系統(tǒng)周期以上低電平脈沖;

  延時等待20ms后,由外部通過AVR的SPI口向芯片下發(fā)允許SPI編程的指令;

  如果外圍連接在上電情況時表現(xiàn)為強上拉或強下拉(最極端情況為接高電平或GND),那么為了保證AVR的SPI功能的正常工作,應該如圖2-20中所示,串入3個隔離電阻,阻值在2K左右。

  AVR熔絲位的配置:

  對于剛開始學習使用AVR的讀者,建議改變的熔絲位有:

  系統(tǒng)時鐘采用內(nèi)部4M的RC振蕩源。其優(yōu)點是速度適中,且應用于RS-232通信時,分頻產(chǎn)生的9600bps速率與標準值的誤差最小(0.2%)。

  禁止片內(nèi)的JTAG口功能。不使用JTAG在線仿真,將4個引腳PC2-PC5釋放,作為普通的I/O使用。

  啟用低電壓檢測復位功能。檢測電平設置為4.0V。



關鍵詞: AVR 最小系統(tǒng)

評論


相關推薦

技術專區(qū)

關閉