芯片-avr中文參考at90s大多數為單指令周期_第1頁
芯片-avr中文參考at90s大多數為單指令周期_第2頁
芯片-avr中文參考at90s大多數為單指令周期_第3頁
芯片-avr中文參考at90s大多數為單指令周期_第4頁
芯片-avr中文參考at90s大多數為單指令周期_第5頁
免費預覽已結束,剩余66頁可下載查看

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

特AVRRISC結構AVR高性能低功耗RISC結構118條指 大多數為單指令周32個8位通用工作寄存工作10MHz時具有10MIPS的性數據和非易失性程序內存2K字節(jié)的在線可編程FLASH擦除次數1000次128字節(jié)128字節(jié)可編程 100000次程序加密位Peripheral特點個可預分頻Prescale的8位定時器/計數個可預分頻具有比較捕捉和8-9-10位功能的16位定時器/計數器片內模擬比較器可編程的看門狗定時器由片內振蕩器生成用于下載程序的SPI口全雙工特別的MCU特點低功耗空閑和掉電模式內外部中斷源規(guī)范Specification低功耗高速CMOS工藝全靜態(tài)工作4MHz3V25條件下的功耗工作模式2.8mA空閑模式掉電模式<1I/O和封裝15個可編程的I/O20PDIPSOIC封裝工作電壓2.7V-6.0VAT90S2313-44.0V-6.0VAT90S2313-10速描AT90S2313AVRRISCCMOS8位單片機通過在一個時鐘周期內執(zhí)行一條指令AT90S23131MIPS/MHz的性能從而使得設計人員可以AVR32ALU算邏單元直接相連允許在一個時鐘周期內執(zhí)行的單條指令同時兩個獨立的寄存器這種結構提高了代碼效率使AVR得到了比普通CISC單片機高將近10倍的性能圖 AT90S2313具有以下特點2KFLASH128EEPROM128SRAMI/0口32個通用工作寄存器具有比較模式的靈活的定時器/計數器內外中斷源可編程的UART可編程的看門狗定時器程序用的SPI口以及兩種可通過軟件選擇的省電模式工作于空閑模式時CPU將停止運行而寄存器定時器/計數器看門狗和中斷系統(tǒng)繼續(xù)工作掉電模式時振蕩器停止工作所有功能都被而寄存器內容得到保留ATMELFLASHISP接口或通用編程器多次編程通過將增強的RISC8位CPU與FLASH集成在一個內2313AT90S2313具有一整套的編程和系統(tǒng)開發(fā)工具宏匯編調試/仿真器仿真器和管腳配置管腳定義 GND電源B口PB7…PB0B8I/O口每一個管腳都有內部上拉電阻可單獨選擇PB0PB1作為片內模擬比較器的正AIN0負AIN1輸入端B口的輸出緩沖器能夠吸收20mA電流可直接驅動LED當作為輸入時如果外部被拉低由于上拉電阻的存在管腳將輸出電流在復位過程中B口為三態(tài)即使此時時鐘還未起振D口D7I/O20mA輸入時如果外部被拉低由于上拉電阻的存在管腳將輸出電流在復位過程中D口為三態(tài)即使此時時鐘還未起振/RESET復位輸入超過50ns的低電平將引起系統(tǒng)復位低于50ns的脈沖不能保證可靠XTAL1振蕩器放大器的輸入端XTAL2振蕩器放大器的輸出端晶體振蕩器XTAL1XTAL2分別是片內振蕩器的輸入輸出端可使用晶體振蕩器或是陶瓷振蕩器當使用外部時鐘時XTAL2應懸空圖 振蕩器連圖 結構縱覽4AT90S2313AVRRISC快速寄存器文件包含32個8位可單周期的通用寄存器這意味著在一個時鐘周期內ALU可以完成一次如下操作寄存器文件中的兩個操作數執(zhí)行操作將結果存回6316運算能力其中Z指針還用于查表功能ALU支持兩個寄存器之間寄存器和常數之間的算術和邏輯操作以及單寄存器的操作除了寄存器操作模式通常的內存模式也適用于寄存器文件這是因為AT90S2313為寄存器文件分配了32個最低的數據空間地址$00-$1F允許其象普通內存地址一樣I/O內存空間包括64個地址作為CPU外設的控制寄存器T/C 以及其他I/O功能I/O內 也可以作為數據地址$20-$5F來AVR采用了HARVARD結構程序和數據總線分離程序內存通過兩段式的管道Pipeline進行當CPU在執(zhí)行一條指令的同時就去取下一條指令這種預取指的概念使得指相對跳轉和相對調用指令可以直接1K地址空間所有的AVR指令都為16位長每個程序內存地址都包含一條16位或32位的指令當執(zhí)行中斷和子程序調用時返回地址于堆棧中堆棧分布于通用數據SRAM之中SRAMSPSPAVR結構的內存空間是圖 內存映I/O有一個中斷向量由中斷向量組成的中斷向量表位于程序區(qū)的最前面中斷向量地址低通用工作寄存器文件圖 ……… 作 所有的寄存器操作指令都可以單指令的形式直接所有的寄存器例外情況為5條涉及常數操作的指令SBCISUBICPIANDI和ORI這些指令只能通用寄存器文件的后半部分R16到R31632個地址雖然寄存器文件的實現與SRAM不同這種內存組織方式在寄存器方面具有極大XYZ寄存器寄存器R26~R31除了用作通用寄存器外還可以作為數據間接尋址用的地址指針圖7 YZ寄存器R27R26R27R260707X 0707 0707ZAVRALU32個通用工作寄存器直接相連ALU3類算術邏輯和位操作可編AT90S23132KFLASH16FLASH AT90S2313的程序計數器PC為10位寬可以尋址到1024個字的FLASH程序AT90S2313128EEPROM它是作為一個獨立的數據空間而存在的可以按字節(jié)讀寫EEPROM的至少為100000次擦除EEPROM的由地址寄存器數據圖 寄存器文 ……I/O寄存 ………224個數據地址用于尋址寄存器文件I/OSRAM96個地址為寄存器文件+I/O其后的128個地址用于尋址SRAM5種直接帶偏移量的間接間接預減的間接后加的間接寄存器R26R31為間接尋址的指針寄存器YZ63個地址帶預減和后加的間接尋址模式要用到XYZ指針32個通用寄存器64I/O128SRAM程序和數據尋址模式AT90S2313支持強大而有效的尋址模 本節(jié)將要介紹各種尋址模單寄存器直接尋址圖9雙寄存器直接尋址圖10I/O直接尋址圖11數據直接尋址圖12帶偏移的數據間接尋址圖13數據間接尋址圖14帶預減的數據間接尋址圖15帶后加的數據間接尋址圖16使用LPM指令尋址常數圖17間接程序尋址IJMP圖相對程序尋址RJMP圖內存和指令執(zhí)行時AVRCPU由系統(tǒng)時鐘驅動此時外部晶體直接產圖20說明了由HARVARD結構決定了的并行取指和執(zhí)行以及快速寄存器文件的概念這是一個基本的達到1MIPS/MHz優(yōu)良的性價比功能/時鐘比功能/功耗比的流水線概2021演示的是寄存器文件內部時序在一個時鐘周期里ALU可以同時對兩個寄存器操作數進行操作同時將結果存回到其中的一個寄存器中去I/O內表 地址16進制 T/CMCU控制寄T/C0T/C08位T/C1T/C1DAVR2313的所有I/O和都被放置在I/O空間IN和OUT指令用來不同的I/O地址32個通用寄存器之間傳輸數據地址為$00-$1FI/OSBICBI指令進行位尋址而SIBCSIBSINOUT指令時地址必須在$00-$3F之間如果要象SRAM一樣I/O寄存器則相應地址要加上$20在本文檔里所有I/O寄存器的SRAM地址寫在括號中為了與后續(xù)產品兼容保留未用的未應寫0而保留的I/O寄存器則不應一些狀態(tài)標志位的清除是通過寫1來實現的CBI和SBI指令已置位的標志位時會回寫1因此會清除這些標志位CBI和SBI指令只對$00-$1F有效I/O寄存器和控制寄存器在后續(xù)章節(jié)介狀態(tài)寄存器 StatusRegisterITHSVNZC ITHSVNZC$3F$5F 全局中斷使能置位時使能全局中斷單獨的中斷使能由個獨立控制寄存器控制如果I清零則不論單獨中斷標志置位與否都不會產生中斷I在復位時清零RETI指令執(zhí)行后置位T位拷貝位拷貝指令BLD和BST利用T作為目的或源地址BST把寄存器的某一位拷貝到 BLD把T拷貝到寄存器的H半加標志位S符號位 二進制補碼溢出標志位N負數標志位Z零標志位C進位標志位狀態(tài)寄存器在進入中斷和退出中斷時并不自動進行和恢復這項工作由軟件完堆棧指針 $3D$5D00000000堆棧指針指向位于SRAM的函數及中斷堆棧堆??臻g必須在調用函數或中斷使能之前定義指針必須指向高于$60的地址用PUSH指令推數據入棧時堆棧指針將減一而當調用函數或中斷時指針將減二使用POP指令時堆棧指針將加一而用RETRETI返回時指針將加二復位和中斷處理AT90S231310事件都有自己的使能位當使能位置位I也置位的情況下中斷可以發(fā)生2在中斷向量表中處于低地址的中斷具有高的優(yōu)先級所以RESET具有最高的優(yōu)先級表 1硬件管腳上電復位和看門狗復位234T/C15T/C16T/C17T/C08UART9UARTUARTPT1T1T1T0PR16,<指令SPL,R16復位源上電復位當電源電壓低于上電門限VPOT時MCU外部復位當/RESET50nsMCU看門狗復位看門狗定時器超時后MCU在復位期間所有的I/O寄存器被設置為初始值程序從地址$000開始執(zhí)行$000地址中放置的指令必須為RJMP相對跳轉指令跳轉到復位處理例程若程序不需中斷則中斷向量就可放置通常的程序代碼圖23為復位電路的邏輯圖表3定義了復位電路的時序圖 復位邏表 復位電參數VCC=符參最小值典型值最大值單上電復位電壓門限上升V上電復位電壓門限下降V--V復位延遲周期FSTRT復位延遲周期FSTRT注1.除非電源電VPOT否則上電復位不會發(fā)WDT振蕩周期數示于4看門狗振蕩器的頻率與工作電壓有關具體參見后續(xù)章節(jié)的典型特性4溢出時間WDT周期上電復位上電復位POR保證器件在上電時正確復位如圖23所示看門狗定時器驅動一個內MCUVCCVPOTFLASHFSTRTMCU如果內置于片內的啟動時間足夠的話/RESETVCC直接相連或是外接上拉電阻VCC的同時保持/RESET圖 MCU起動/RESET與VCC相圖 MCU啟動/RESET由外電路控外部復位外部復位由外加于/RESET引腳的低電平產生大于50ns的復位脈沖將造成復位施加短脈沖不能保證可靠復位當外加信號達到復位門限電壓VRST上升沿時tTOUT延時周期開始然后MCU啟動圖 看門狗復位當看門狗定時器溢出時將產生1XTAL周期的復位脈沖在脈沖的下降沿延時定時器開始對tTOUT記數圖 中斷處理AT90S2313有2個中斷 控制寄存器GIMSK通用中斷 寄存器和TIMSKT/C中斷一個中斷產生后全局中斷使能位I將被清零后續(xù)中斷 I置位從而開放中 執(zhí)行RETI后I重新置對于那些由可以保持為靜態(tài)的事件如輸出比較寄存器1與T/C1值相匹配驅動的中斷事件發(fā)生后中斷標志將置位如果中斷標志被清除而中斷條件仍然存在則標志只有在新事當程序計數器指向實際中斷向量開始執(zhí)行相應的中斷例程時硬件清除對應的中斷標志一些中斷標志位也可以通過軟件寫1 當一個符合條件的中斷發(fā)生后如果相應的中斷使能位為0則中斷標志位掛起并一直保持到中斷執(zhí)行或者被軟件清除如果全局中斷標志被清零則所有的中斷都不會被執(zhí)行直到I置位然后被掛起的各個中注意外部電平中斷沒有中斷標志位因此當電平變?yōu)榉侵袛嚯娖胶笾袛鄺l件即終止進入中斷和退出中斷時MCU不會自動保存或恢復狀態(tài)寄存器故爾需由軟件處理通用中斷屏蔽寄存器

76543210------RRRRRR000000005…0INT1外部中斷1請求使能當INT0和I都為1時外部引腳中斷使能MCU通用控制寄存器MCUCR中的斷檢測控制位1/0ISC11和ISC10定義中斷1是上升沿中斷還是下降沿中斷或者是低電平中斷即使管腳被定義為輸出中斷仍可產生INT0外部中斷0請求使能當INT0和I都為1時外部引腳中斷使能MCU通用控制寄存器MCUCR中的斷檢測控制位1/0ISC01和ISC00定義中斷0是上升沿中斷還是下降沿中斷或者是低電平中斷即使管腳被定義為輸出中斷仍可產生通用中斷標志寄存器

76543210------RRRRRR000000005…0INTF1外部中斷標志當INT1管腳有事件觸發(fā)中斷請求時INTF1置位1如果SREG中的I及GIMSK中的INT1都為1則MCU將跳轉到中斷地址$002中斷例程執(zhí)行后此標志被清除另外標志也可以通過對其寫1來清除INTF0外部中斷標志當INT0管腳有事件觸發(fā)中斷請求時INTF0置位1如果SREG中的I及GIMSK的INT0都為1 則MCU將跳轉到中斷地址$001中斷例程執(zhí)行后此標志被清除另外標志也可以通過對其寫1 T/C中斷屏蔽寄存器

---- 初始 位 保TOIE1T/C1溢出中斷使當TOIE1和I都為1 時T/C1溢出中斷使能當T/C1溢出或TIFR中的TOV1位置位時中斷例程$005得到執(zhí)行OCIE1AT/C1輸出比較匹配中斷使能TOIE1和I都為1時輸出比較匹配中斷使能當T/C1的比較匹配發(fā)生或TIFR中的OCIE1A置位中斷例程$004將執(zhí)行TICIE1T/C1輸入捕捉中斷使能當TICIE1和I都為 時輸入捕捉中斷使能當T/C1的輸入捕捉事件發(fā)生PD6TIFR中的ICF1置位中斷例程$003將執(zhí)TOIE0T/C0溢出中斷使當TOIE0和I都為1 時T/C0溢出中斷使能當T/C0溢出或TIFR中的TOV0位置位時中斷例程$006得到執(zhí)行T/C中斷標志寄存器 543210 ---- RRRR初始 000000位 保TOV1T/C1溢出中斷標志位當T/C1溢出時TOV1置位執(zhí)行相應的中斷例程后此位硬件清零此外TOV1也可以通過寫1 來清零當SREG中的位ITOIE1和TOV1一同置位時中斷例程得到執(zhí)行在模式中當T/C1在$0000改變記數方向時TOV1置位OCF1A輸出比較標志當T/C1與OCR1A的值匹配時OCF1A置位此位在中斷例程里硬件清零或者通過對其寫1 來清零當SREG中的位IOCIE1A和OCF1A一同置位時中斷例程得到執(zhí)行 輸入捕捉標志位當輸入捕捉事件發(fā)生時ICF1置位表明T/C1的值已經送到輸入捕捉寄存器ICR1 在中斷例程里硬件清零或者通過對其寫1來清零當SREG中的位ITICIE1A和ICF1一同置位時中斷例程得到執(zhí)行TOV0T/C0溢出中斷標志位當T/C0溢出時TOV0置位執(zhí)行相應的中斷例程后此位硬件清零此外TOV0也可以通過寫1 來清零當SREG中的位ITOIE0和TOV0一同置位時中斷例程得到執(zhí)行外部中斷INT0和INT1引腳觸發(fā)應當注意如果中斷使能則即使INT0/INT1輸出中斷照樣會被觸發(fā)此特點提供了一個產生軟件中斷的方法觸發(fā)方式可以為上升沿MCUMCUCR決定當設置為低電平觸發(fā)時只要電平為低中斷就一直觸發(fā)中斷響應時間AVR中斷響應時間最少為4個時鐘周期在這4個時鐘期間PC2個字節(jié)自動入棧SP22個時鐘周期如MCU才會執(zhí)行中斷程4個時鐘在此期間PC將被彈出棧SREGI被置位如果在中斷期間發(fā)生了其他中斷則AVR在退出中斷程序后要執(zhí)行一條主程序指令之后才能再響應被MCU控制寄存器 6543210 - R初始 0000000位 保SE休眠使能SLEEP指令時SEMCUMCU進入休眠建議與SLEEP指令相連使用SM休眠模式此位用于選擇休眠模式SM為 時為閑置模式SM為 ISC11ISC10中斷檢測控制11和位INT1中斷的邊沿或電平如下表所示表 中斷1檢測控描00011011注改變ISC11/ISC10時首先要INT1清除GIMSK的INT1 否則可能不必要的中ISC01ISC00中斷檢測控制01和位INT0中斷的邊沿或電平如下表所示表 中斷0檢測控描00011011注改變ISC01/ISC00時首先要INT0清除GIMSK的INT0位 否則可能不必要的中斷INTn引腳的電平在檢測邊沿之前采樣如果邊沿中斷使能則大于一個MCU時鐘的脈沖將觸發(fā)中斷如果選擇了低電平觸發(fā)則此電平必須保持到當前執(zhí)行的指令結束休眠模式SE為1SLEEP指令使能的中斷將喚醒MCU完成中斷例程后MCUSLEEP以后的指令在休眠期間寄存器文件及I/O內存的內容不會丟失如果在休眠模式下復位則MCU從RESET向量$000處開始運行閑置模式SM為0時SLEEPMCU進入閑置模式在此模式下CPU停止運行而定時器/計數器看門狗和中斷系統(tǒng)繼續(xù)工作內外部中斷都可以喚醒MCU如果不需要從模擬比較器中斷喚醒MCU為了減少功耗可以切斷比較器的電源方法是置位ACSR的ACD如果MCU從閑置模式喚醒CPU將立即執(zhí)行指令掉電模式SM為1時SLEEPMCU進入掉電模式在此模式下外部晶振停振而外部中斷及看門狗在使能的前提下繼續(xù)工作只有外部復位看門狗復位和外部電平中斷INT0INT1可以使MCU脫離掉電模式MCU時要注意保持低電平大于TTOUT的時間否則MCU繼續(xù)保持定時器/計數器AT90S2313內部有兩個通用定時器/8T/C16位T/CT/C10位的預分頻定時器取得預分頻的時鐘T/C既可用作使用片內時鐘的定時器也可用作T/C的預分頻器圖 T/C的預分頻4種可選的預分頻時鐘為CK/8CK/64CK/256CK/1024CK為振蕩器時鐘還可以選擇CK外部時鐘以及停止工作829T/C0圖 T/C0工作框T/C0CKCKT/C0控制寄存器TCCR0來停止它TIFR為狀態(tài)標志寄存器TCCR0為控制寄存器而TIMSKT/C0T/C0CPU時間至少為一個CPU時鐘周期MCU在內部CPU時鐘的上升沿對外部信號進行采樣在低預分頻條件下T/C0具有高分辨率和高精度的特點而在高預分頻條件下T/C0T/C0控制寄存器 6543210 ---- RRRR初始 00000007…3CS02CS01CS00時鐘選擇表 T/C0預分頻選000001010011100101110外部引腳 下降111外部引腳 上升當T/C0由外部引腳T0驅動時即使PD4T0配置為輸出管腳上的信號變化照樣可以使計數器發(fā)生相應的變化這就為用戶提供了一個軟件控制的方法T/C07654321000000000T/C0是可以進行讀/寫的向上計數器只要有時鐘輸入T/C0就會在寫入的值基礎上向1630T/C1圖 T/C1工作框T/C1CKCK或外部引腳輸入另外還可以由T/C1TCCR1B來停止它TIFR為狀態(tài)標志寄存器TIMSKT/C1T/C0CPU對信號的正確采樣要保證外部信號的轉換時間至少為一個CPU時鐘周期MCU在內部CPU時鐘的上升沿對外部信號進行采樣在低預分頻條件下T/C1具有高分辨率和高精度的特點而在高預分頻條件下T/C1非常適用于低速功能如計時OCR1A作為數據源T/C1還可以實現輸出比較的功能此功能包括比較匹配時清除計數器和輸出比較管腳1的動作幾種動作可任選一種T/C1還可以用作89或10位的 調制器在此模式下計數器和OCR1寄存器用作ICPT/C1ICR1捕捉事件的設置由TCCR1B控制此外模擬比較器也可以設置為觸發(fā)輸入捕捉ICP引腳邏輯見圖圖 ICP引腳原理44T/C1控制寄存A76543210----RRRR000000005…2比較輸出模式1COM1A1COM1A0T/C1的比較匹配發(fā)生時輸出引腳的動作這些動作都將影響管腳OC1-輸出比較引腳1PB3這是I/O口的第二功能相應的方向控制位要設置為1以便將其配置為輸出具體配置見表8表 比較1模式選描000110111110選表 描00T/C1的操作無01T/C18位10T/C19位11T/C110位T/C1控制寄存器 6543210 -- RR初始 0000000位 保ICNC1輸入捕捉抑制器4個時鐘時ICP44ICES1輸入捕1邊沿選擇ICES1位為0時T/C1ICP若ICES1位為1則T/C1的值在ICP引腳電平的上升沿被傳送到CTC1比較匹配時清除CTC1為1時比較A匹配事件發(fā)生后T/C1將復位為0若CTC1為0則T/C1將連續(xù)記數而不受比較匹配的影響由于比較匹配事件的檢測發(fā)生在匹配發(fā)生之后的一個CPU1A比較匹配寄存器的值設置為C時定時器的記數方式為…|C-2|C-1|C|0|18時定時器的記數方式則為…|C-2,C-2,C-2,C-2,C-2,C-2,C-2,C-2|C-1,C-1,C-1,C-1,C-1,C-1,C-1,C-1|C,0,0,0,0,0,0,0在模式下這幾位沒有作CS12CS11CS10時鐘選擇表 T/C1預分頻選描000001010011100101110外部引腳 下降111外部引腳 上升當T/C1由外部引腳T1驅動時即使PD5T1配置為輸出管腳上的信號變化照樣可以使計數器發(fā)生相應的變化這就為用戶提供了一個軟件控制的方法T/C1TCNT1H8765432100000000000000000此16位寄存器包含了T/C1的值當CPU這兩個寄存器時為了保證高字節(jié)和低字節(jié)能夠同時讀寫要用到一個8位的臨時寄存器TEMP此寄存器在OCR1A和ICR1的時候也要用到如果主程序和中斷程序在寄存器時都要用到TEMP那么在適當的時候CPUTCNT1HTEMP寄存器當CPUTCNT1L時此數據及TEMP中的數據一并寫入TCNT1因此在寫TCNT116位時首先要寫TCNT1H當CPUTCNT1L時TCNT1L的數據將送入CPU同時TCNT1H將送入寄存器等到CPUTCNT1H時TEMP中的數據送入CPU因此在讀16位TCNT1時首先要T/C1是向上記數器或上/下記數器在 模式下若T/C1被置數則T/C1將在預置T/C1輸出比較寄存器 OCR1AH和8765432100000000000000000由于OCR1A為16位寄存器所以在時要用到TEMP寄存器以保證兩個字節(jié)的同步更新其讀寫過程與讀寫TCNT1相同876543218765432100000000000000000ICES1ICPTCNT1ICR1同時ICF1置位由于ICR1為16位寄存器所以在時要用到TEMP寄存器以保證同時兩個字節(jié)讀寫過程與讀寫TCNT1相同模式下的選擇模式后T/C1和輸出比較寄存器1-OCR1共同組成一個89或10位的無尖峰的自由運行的其輸出引腳為PB3OC1T/C1作為上/下計數器從0記數到TOP然后反向記數回到0當計數器中的數值和OCR1A的數值低89或10位一致時PB3OC1引腳按照COM1A0和COM1A1的設置動作表 TOP值及頻分辨率TOP的值頻8$00FF2559$01FF51110$03FF1023表 模式下的比較1模式選擇000110置位OC1正 11置位OC1反 模式下OCR1A的低10位首先在一個臨時的位置等到T/C1達到TOP時才真正存 圖 失步的OCR1鎖如果在執(zhí)行寫和鎖存操作的時候OCR1A讀到的是臨時位置的數OCR1的值為$0000TOPOC1表 OCR=$0000或TOP時的輸10L10H11H11L在模式下當計數器達到$0000時將置位TOV1此時發(fā)生的中斷與正常情況下的中看門狗定時器VCC=5V的條件下典型振蕩頻率為1MHz通過調整定時器的預分頻因數8種可以改變看門狗復位時間間隔看門狗復位指令是WDT如果定時時間已經到而且沒有執(zhí)行WDTMCU2313從復位地址重新開始執(zhí)行為了防止不關閉看門狗需要有一個特定的關閉程序33看門狗定時器控制寄存7器 7器 ---RRR00000000WDTOE看門狗關閉使能當WDE清零時此位必須為 才能關閉看門狗在置位的4個時鐘后硬件對其清WDE看門狗使WDE為1 時看門狗使能只有在WDTOE為1 時WDE才能清零以下為關閉看在同一個指令內對WDTOE和WDE寫邏輯 即使WDE已經為14個時鐘之內WDEWDP2…0預分頻表 000001010011100101110111注看門狗的振蕩頻率于電壓有WDT應該在看門狗使能之前執(zhí)行一次如果看門狗在復位之前使能EEPROM讀/EEP的時間與電壓有關大概在2.5~4ms之間自定時功能可以讓用戶監(jiān)測何時開始寫下一字節(jié)如果用戶要操作EEPROM應當注意如下問題在電源濾波時間常數比較大的電路中上電/VCC上升/下降會比較慢此時MCU將工作于低于晶振所要求的電源EEP寫指令為了保證EEP的數據完整性建議使用電壓復位電路EEPROM寫操作需要執(zhí)行一個特定的寫時序具體參看后續(xù)內容EEPROM讀/寫操作時CPU2個周期然后再執(zhí)行后續(xù)指令EEPROM地址寄存 6543210 初始 XXXXXXX位 保EEPROM數據寄存器7654321000000000EEPROM寫操作EEDRDDAR單元的數據對于讀操作EEDR址 765432176543210-----RRRRR000000007…3EEMWEEEPROM主寫使能EEMWEEEWE為1

當EEMWE為1時置位當將把數據寫入EEPROM的指定地址若EEMWE為0 則EEWE不起作用EEMWE置位后4個周期硬件對其清零EEWEEEPROM寫使當EEP數據和地址設置好之后需置位EEWE以便將數據寫入EEPROM寫時序如下23步不是必須的EEMWE4個周期內EEWE經過寫時間VCC=2.7V時為4ms左右VCC=5V時為2.5ms左右之后EEWE硬件清零用戶可以憑此位判斷寫時序是否已經完成EEWE置位后CPU要停止2個周期注意發(fā)生在步驟45EEP的中斷打斷了EEP操作RRAREEDR寄存器可能被修改引起EEP操作失敗建議此時關閉全局中斷標志IEEREEEPROM讀使能EEPEEREEEDREEREEEPROM的數據已經讀入EEDREEPROM數據的只需要一條指令且無需等待EERE置位后CPU要停止2個周期用戶在EEP時應該檢測EEWE如果一個寫操作正在進行寫EEAR和EEDR將中EEP的寫入使得結果無法防止EEPROM數據毀由于電源電壓過低CPUEEPROM有可能工作不正常造成EEPROM數據的毀壞這種情況在使用獨立的EEPROM器件時也會遇到EEPROMEEPROM寫操作所需要的最低電壓二是CPU本身已經無法正常工作當電壓過低時保持/RESET信號為低這可以通過外加復位電路BOD 來完成有些AVR產品本身就內含BOD電路看有關有效防止對EEPROM的誤操作將那些不需修改的常數于FLASH之AT90S2313具有全雙工通用異步收發(fā) 其主要特點波特率發(fā)生器可以產生大量的波特率bps893個獨立的中斷發(fā)送結束發(fā)送數據寄存器空接收結束數據發(fā)送UARTUDRUDR的數據UDR若前一個字符的停止位還沒有移出移位寄存器則要等到停止位移出后UDR的數據圖 如果1011位收發(fā)器移位寄存器為空UDR中的數據將傳送到移位寄存器此時置位表明UART0位起始位自動清零而位9和10停止位置位如果選擇了9位數據格式UART的CHR9置位則UCRTXB8將送到移位寄存器的位9UART首先在TXD引腳送出起始位然后是數據低位 如果UDR里有新數據則UART會在停止位發(fā)送完畢只有自動加載數據在加載數據的同時UDRE置位并一直保持到有新數據寫入UDR如果UDR沒有新數據而且停止位也已經輸出一個bit的長度則發(fā)送結束標志TXC置位UCRTXENUART發(fā)送器當TXEN為0時PD1I/O為 時UART輸出自動連接到 強迫其為輸出而不管方向寄存器的設數據接收圖 UART的前端以16倍于波特率的頻率對RXD引腳進行采樣如果在此管腳處于空閑狀態(tài)的時候檢測到低電平則認為這是起始位的下降沿起始位檢列開始假定采樣1為第一CPU8910RXD3次連續(xù)采樣如果有兩個或全部采樣值為高則認為當前信號是一個虛起始位要丟棄MCU將開始等待新一次的1到0的轉換如果檢測到了一個有效的起始位MCU就會開始采樣數據數據位的檢測同樣是在采樣8910兩個或3個相同的值被認為是當前位的值圖36說明了采樣過程圖 當停止位進入時3個采樣值當中必須要有兩個以上為高否則USR中的幀錯誤標志位FE置位在讀UDR之前用戶應該檢查FEUDRUSRRXC置位UDR實際上是兩個物理上分離的寄存器一個用于發(fā)送一個用于接收UDR時的是接收UDRUDR時的是發(fā)送UDR9位則UCRRXB8在數據傳送到UDR時加載到發(fā)送移位寄存器的位9如果在UDR之前UART又接收到一個數據則USR的OR置位這表明數據無法轉移到UDR而丟失了OR一直保持到UDR被因此如果波特率比較高或者CPU負載比較重用戶應該在讀UDR時首先檢測OR標志如果RXEN為0則不工作PD0可以用作普通I/O口而若RXEN置位則 當UCR的CHR9為1時收發(fā)的數據格式為9位要發(fā)送的第9位是UCR的TXB8要在寫UDR之前設置而接收到的第9位是RXB8UART控制UART數據寄存器7654321000000000UDR實際上是兩個物理上分離的寄存器一個用于發(fā)送一個用于接收UDR時訪問的是接收UDR而在寫UDR時的是發(fā)送UDR U---RRRRRRRR001000002…0RXCUART接收結束RXC置位表示接收到的數據已經從接收移位寄存器傳送到UDR但是不管數據是否有誤如果RXCIE為1則RXC置位時將引起接收結束中斷RXC在讀UDR時自動被清除如果采用中斷方式則中斷例程必須讀一次UDR以清除RXC否則中斷結束后又會中TXCUART發(fā)送結束TXCUDR中沒有新的要發(fā)送的數據在半雙工通信應用當中由于發(fā)送器在發(fā)送完數據之后要立即轉換到接收模式所以這個標志如果TXCIE已置位則TXC置位將發(fā)送結束中斷進入中斷例程后TXC自動清零或者用戶可以對其寫1以達到清零的目的UDREUART數據寄存器空UDR傳送到發(fā)送移位寄存器后UDRE置位表明發(fā)送器已經準備好接收新的要當UDRIE置位則只要UDRE為1UART發(fā)送結束中斷就可以執(zhí)行寫UDR將復位UDRE如果利用中斷方式發(fā)送數據則在UARTUDR以清除UDRE否則中斷將連續(xù)發(fā)生復位后UDRE的初始值為1表明發(fā)送器就FE幀錯誤MCU檢測到幀錯誤如檢測到停止位為0時FE置位當檢測到數據停止位為1 時FE復位OR過速UDR未讀而新的數據又已進入移位寄存器ORUART控制寄存器76543210RW00000010RXCIE接收結束中斷使能TXCIE發(fā)送結束中斷使能UDRIEUART數據寄存器空中斷使能RXEN接收使能使能UART接收接收將導致TXCOR和FE無法置位同時也不能復位已經置位的TXEN發(fā)送使能TXENCHR99MCU99位字符的讀/RXB8/TXB89位RXB89位TXB8發(fā)送的第9位發(fā)送字符的第9位波特率產生器

BAUD f16UBRR式中16UBRRfCK=UBRR=UART波特率寄存器的內容0-255表 %%%%UBR 26378256713341223011201110000%%%%UBR 867894567333422231112%%%%UBR- 19178956783345UART波特率寄存 6543210 初始 0000000模擬比較器模擬比較器比較正輸入端PB0AIN0和負輸入端PB1AIN1的值如果PB0AIN0的電壓高于PB1AIN1的值比較器的輸出ACO將置位此輸出可用來觸發(fā)模擬比較器中斷上升沿下降沿或電平變換也可以觸發(fā)T/C1的輸入捕捉功能其框圖如圖37所示圖37模擬比較器框圖模擬比較器控制和狀態(tài)寄存器

76543210-RR00000000位 保ACD模擬比較器當ACD為1 時模擬比較器的電源將切斷可以在任何時候對其置位以關閉模擬比較器這樣可以減少器件的功耗改變ACD時要注意模擬比較器的中斷否則有可能不ACO模擬比較器輸 模擬比較器中斷標志ACIACIS1ACIS0ACII都為1則CPU執(zhí)行比較器中斷例程進入中斷例程后ACI被硬件清零此外ACI也可以通過對此位寫1來達到清零的目的要注意的是如果ACSR的另一些位被SBI或CBI指令修改時ACI亦被清零ACIE模擬比較器中斷使能ACIE為 時比較器中斷使ACIC模擬比較器輸入捕捉使能ACIC為 時T/C1的輸入捕捉功能由比較器中斷觸發(fā)此時比較器的輸出與的輸入捕捉前端直接相連T/C1的輸入捕捉噪聲抑制和邊沿選擇仍然適用如果ACIC0則模擬比較器與T/C1沒有關聯為了使能比較器驅動的T/C1輸入捕捉中斷ACIS1ACIS0模擬比較器中斷模式選擇表 中斷模式00 中0110ACO下降沿中斷11ACO上升沿中斷注改變ACIS1/ACIS0時要注 模擬比較器的中斷否則有可 腳的方向值 /使能上拉時不會無意地改變其他管腳的方向值/使能上拉BB口有3個I/O地址數據寄存器PORTB$18$38數據方向寄存器DDRB$17$37和輸入引腳PINB$16$36PORTB和DDRB可讀可寫PINB只可20mA的電流能夠直接驅動LED當管腳被拉低 如果上拉電阻已經激 則引腳會輸出電表 B口第二功管第二功能AIN0模擬比較器正輸入端AIN1模擬比較器負輸入端OC1T/C1比較匹配輸出MOSI程序時的數據輸入線MISO程 SCK串行時鐘當使用B口的第二功能時DDRB和PORTB要設置成B口數據寄存器7654321000000000B口數據方向寄存器 6543210 初始 0000000B口輸入引腳地址 6543210 RRRRRRR PINB不是一個寄存器這個地址用來B口的物理值PORTB時讀到的是B口鎖存的數據而PINB時讀到的是施加于引腳上的邏輯數值B口用作通用數字I/O時B8PBn通用I/O引腳DDRB中的DDBn選擇引腳的方向如果DDBn為1則PBn為輸出腳如果DDBn為0則PBn為輸入腳在復位期間B口為三態(tài)口表 B口的配00N三態(tài)高阻01Y10N11N 6…0B口的第二功能SCK 當配置為輸入DDB1=0無上拉電阻PB1=0時為模擬比較器的負輸入 當配置為輸入DDB0=0無上拉電阻PB0=0時為模擬比較器的正輸入B口示意圖圖 B口示意圖PB0和PB1圖 B口示意圖PB3圖 B口示意圖PB2和PB4B口示意圖B口示意圖B口示意圖B口示意圖圖 B口示意圖DD口有3個I/O地址數據寄存器PORTD $12$32數據方向寄存器DDRD $31和輸入引腳PIND $10$30PORTD和DDRD可讀可寫PIND只可讀D7I/O管腳PD6~PD020mA的電流能LED當管腳被拉低時如果上拉電阻已經激活則引腳會輸出電流表 D口第二功管第二功能RXDUART接收引腳INT0外部中斷0輸入INT1外部中斷1輸入T0T/C0的外部輸入T1T/C1的外部輸入ICPT/C1的輸入捕捉引腳D口數據寄存器76543210-R00000000D口D口數據方向寄存器 6543210-R00000000D口輸入腳地址 543210-RRRRRRRR0PIND不是一個寄存器這個地址用來D口的物理值PORTD時讀到的是D口鎖存的數據而PIND時讀到的是施加于引腳上的邏輯數值D口用作通用數字 通用I/O引腳DDRD中的DDDn選擇引腳的方向如果DDDn為1則PDn為輸出腳如果DDDn為0則PDn為輸入腳在復位期間D口為三態(tài)口表 D口的配00N三態(tài)高阻01Y10N11N 6…0D口的第二功能 接收數據引腳使能后引腳自動配置為輸入而不管 若此時為1則上拉有D口示意圖

圖 D口示意圖圖 D口示意圖D口示意圖D口示意圖PD2D口示意圖D口示意圖PD4圖 D口示意圖程序編程程序和數據鎖定位AT90S2313具有兩個鎖定 如表21所示鎖定位只能通過片擦除命令擦表 程序鎖定位保護類型模111201300注意 在并行編程模式下熔斷位編程也 要先編程熔斷位然后編程鎖定熔斷位AT90S2313有兩個熔斷 SPIEN和SPIEN編程為0后串行程序使能缺省值為0FSTRT編程為0后MCU選擇短起動時間缺省值為1量大時用戶也可以訂購缺省值為0 串 熔斷位只能在并 廠所有的Atmel微處理器都有3字節(jié)的廠標用以識別器件此代碼在串行或并行模式下都可 $912K字節(jié)的 $01當$01地址為$91時器件為23133$00$01和編程FLASHAT90S23132KFLASH128EEPROM在出廠時已經被擦除為1器件支持+12V高壓并行編程和低壓串行編程+12V只用來使能高壓編程不在兩種編程模式下FLASHEEPROM片內集成了自擦和自定時除功能在編程時要注意電源電壓要滿足要求22型串行編程并行編程2.7V–4.5V–并行編程FLASHEEPROM圖 并行編信號命名當驅動/WE或/OE時執(zhí)行加載表 管腳命編程時的信號名稱管功O 器件忙 I輸出使能低電平I寫脈沖低電平I字節(jié)選 低字 高字節(jié)IIPB0-雙向數據總線/OE為低時輸出表 XTAL1給正脈沖后的操作00加載FLASH或EEPROM的地址BS決定 01加載數據BS決定 1011表 命令字節(jié)執(zhí)行的命令100001000010000100010000000000000000進入編程模式拉低/RESET和 等待至少給/RESET11.5~12.5VBS在/RESET加上+12V100ns之內發(fā)生動作將導致器件無法進入編程模式擦除FLASHEEPROM以及鎖定位在FLASHEEPROM完全擦除之FLASHEEPROM重新加載擦除命令設置XA1XA0為 BS為0設置DATA為1000 擦除命XTAL1一個正脈沖加載命令給/WE施加一個tWLWH_CE的負脈沖擦除命令在RDY/BSY引腳沒有反饋FLASH編程設置XA1XA0為 BS為0設置DATA為0001 寫FLASH命XTAL1一個正脈沖加載命令加 設置XA1XA0為 設置BS為 設置DATA=地址的字節(jié)$00-給XTAL1一個正脈沖加載地址的字設置XA1XA0為 設置BS為 設置DATA=地址的低位字節(jié)$00~$FFXTAL1一個正脈沖加載地址的低位字節(jié)設置XA1XA0為 設置DATA=數據的低位字節(jié)$00~$FF XTAL1一個正脈沖加載數據的低位字節(jié)設置BS為 給/WR一個負脈沖開始編程數據同時RDY/BSYRDY/BSY變高然后開始編程下一字節(jié)波形見圖50設置XA1XA0為 設置DATA=數據的字節(jié)XTAL1一個正脈沖加載數據的低位字節(jié)設置BS為 選擇數給/WR一個負脈沖開始編程數據同時RDY/BSY等待RDY/BSY變高然后開始編程下一字節(jié)波形見圖51器件在編程時保存加載令和地址為了有效地進行編程請注意以下幾當寫讀多個內存地址時命令只需加載一僅在編程新的頁256字節(jié)時才需要加載地址字因為擦除之后所有的FLASH和EEPROM的內容都為1故數據為$FF時可以EEPROM的編程以及FLASHEEPROM5051 A加載命令0000B加載地址的字節(jié) 加載地址的低位字節(jié)$00~$FF設置/OE和BS為0此時可以從DATA總線讀FLASH數據的低位字設置BS為1此時可以讀FLASH數據的字設置/OE為1編程 A加載命令0001B加載地址的低位字節(jié)$00~$3F 加載數據的低位字節(jié)$00~$FF 讀 A加載命令0000B加載地址的低位字節(jié)設置/OE和BS為0此時可以從DATA總 數據的低位字設置/OE為1編程熔斷位 A加載命令0100 加載數據的低位字節(jié)Bitn 代表要編 代表要擦Bit5=SPIENBit0 Bit7-6,4-1 1這些位是保留給/WR施加一個tWLWH_PFB的負脈沖此命令在RDY/BSY引腳沒有編程鎖定位 A加載命令0010 加載數據的低位字節(jié)Bitn 代表要編Bit2=LockBit2Bit1=LockBit1Bit7-3,0 1這些位是保留 讀熔斷位和鎖定 A加載命令0000設置/OE為0BS為1此時可以從DATA總線數Bit7=LockBit1Bit6=LockBit2Bit5=SPIENBit0=FSTRT設置/OE為1讀廠標 A加載命令0000C加載數據的低位字節(jié)$00~$02設置/OE為0BS為0 設置/OE為1并行編程特性圖 表 并行編程特性TA= VCC=5VVAData&ControlSetupbeforeXTAL1XTAL1Lowto/WRXTAL1Lowto/OE/WRPulseWidthLowforChip5B/WRPulseWidthLowforProgrammingFuse注1在擦除時使用tWLWH_CE而在編程鎖定位是使用2tWLWHtWLRH長則看不見RDY/BSY脈串當/RESET拉到地時FLASH和EEPROM可以利用SPI總線進行串 SCKMOSI和 /RESET拉低后在進行編程/擦除之前首先要執(zhí)行編程使能指圖 EEPROM由于其本身有自動擦除功能和自定時功能因此更新時無需擦除擦除指令將使FLASH和EEPROM的內容全部變?yōu)?FFFLASH和EEPROM的地址是分離的FLASH的范圍是 EEPROM的范圍XTAL1引腳輸入或是將晶振接到XTAL1XTAL2SCK脈沖的最小高低電低2XTAL1時鐘高2XTAL1串行編程算法進行串行編程時數據在SCKAT90S2313SCK的下降沿輸出至少等待 然后在MOSIPB5串行輸入編程使能指3個字節(jié)的時候器件會響應第二個字節(jié)$53不論響應正確與否4字節(jié)指令必須發(fā)完如果響應不是$53SCK32次都沒如果此時執(zhí)行了擦除指令則須等待tWD_ERASE 然后在/RESET上施加正脈沖回到第FLASHEEPROMtWD_PROG的時間對于擦除過的器件數據$FF就用不著再寫了任意一個內存地址都可以用讀指令在MISOPB6讀編程結束后可以把/RESET拉高進入正常工作模式下電過程如果需要的將XTAL1拉低如果沒有用外部晶振或者用的是內部RC振蕩器把/RESET拉高EEPROM數據檢測EEPROM時如果內部的自擦除過程沒有結束讀正在寫的地址會得到P1自擦除過程結束后器件則返回P2P1和P2的定義見表27當寫過程結束后的數據則為寫入P1P2就不可以用這種方法了此時應當在編程新數據之前至少等待tWD_PROG的時間如果在編程EEPROM之前已經進行過擦除則數據$FF就可以不用再編程了表 型FLASH數據檢測寫FLASH時如果內部寫過程沒有結束則正在寫的地址時會得到返回值$7F否則結果為寫入的數據但是對于數據 間如果在編程FLASH之前已經進行過擦除則數據$FF就可以不用再編程圖 表 指指令格式操字節(jié)字節(jié)字節(jié)字節(jié)10100101xxxxxxxx1010100xxxxxxxxxFLASH00100000oooo從字地址a:b高或低字節(jié)o01000000iiii寫H高或低字101000000bbboooo從地址 數據11000000iiii1010111xxxxxxxxx0011xxxxxxxxoooo從地址b讀廠標 a=地址高b=地址H0低地址1o=輸出數i=輸入數x=任1=Lock2=Lock注意廠標不能在鎖定模式3串行編程電特性55表30串行編程電特性TA=- 到 VCC=2.7V–符參最小值典型值最大值單1/振蕩頻率VCC2.7V–04振蕩周期VCC2.7V–1/振蕩頻率VCC=4.0V08振蕩周期VCC=4.0VSCK2SCKMOSISetuptoSCKMOSIHoldafterSCK21符22符直流特性TA=- 到 VCC=2.7V–符參條最小值典型值最大值單-0.3VCCV-0.1V0.6VCCVCCV0.7VCCVCCV0.85VCCVCCV3BDIOL=20mAVCC=V3DIOLVCC=4BDIOH=20mAIOHVCC=5VVCC=V流I/OVCC=pinA流I/OVCC=pin阻kI/Ok工作狀態(tài)VCC3V閑置狀態(tài)VCC3VWDTVCC=9AVCC=AVCC=流VCC=5VVIN=VCC-VCC=注1最大值代表保證可02最小值代表保證可1所有管腳的IOL之和過D0–D5和ZTAL2的IOL之和過100mAB0–B7和D6的IOL之和過100mA所有管腳的IOH之和過D

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論