新聞中心

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

        AVR硬件設計(內含最小系統電路圖)

        作者: 時間:2018-10-29 來源:網絡 收藏

          

        本文引用地址:http://www.104case.com/article/201810/393512.htm

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

          的復位源和復位方式:

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

          單片機的復位操作,其主要功能是把程序計數器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 復位。當使用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)定義加密位和熔絲位的狀態。“Unprogrammed”表示熔絲狀態為“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。



        關鍵詞: AVR 最小系統

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 尼玛县| 凤庆县| 达拉特旗| 休宁县| 铅山县| 门源| 盐源县| 莲花县| 来宾市| 天津市| 肥西县| 松潘县| 陇南市| 正定县| 宁波市| 望奎县| 湘乡市| 四会市| 英山县| 武隆县| 北碚区| 徐闻县| 荥阳市| 洪洞县| 竹北市| 上思县| 耒阳市| 安泽县| 海林市| 南木林县| 新郑市| 盘山县| 日喀则市| 弋阳县| 中江县| 介休市| 南雄市| 陇南市| 建平县| 北票市| 曲阜市|