版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
特AVRRISC結(jié)構(gòu)AVR高性能低功耗RISC結(jié)構(gòu)118條指 大多數(shù)為單指令周328位通用工作寄存器工作在8MHz時具有8MIPS的性數(shù)據(jù)和非易失性程序內(nèi)存4K/8K字節(jié)的在線可編程FLASH擦除次數(shù)1000次256/512字節(jié)256/512字節(jié)在線可編程EEPROM100000次程序加密位Peripheral特點個可預(yù)分頻 的8位定時器/計數(shù)個可預(yù)分頻具有比較捕捉和8-9-10位功能的16位定時器/計數(shù)器片內(nèi)模擬比較器可編程的看門狗定時器由片內(nèi)振蕩器生成用于下載程序的SPI口全雙工特別的MCU特點低功耗空閑和掉電模式內(nèi)外部中斷源規(guī)范Specification低功耗高速CMOS工藝全靜態(tài)工作4MHz3V25條件下的功耗工作模式3.0mA空閑模式掉電模式<1I/O和封裝32個可編程的I/O40PDIPPLCCTQFP封裝工作電壓速描AT90S4414/8515AVRRISCCMOS8鐘周期內(nèi)執(zhí)行一條指令A(yù)T90S4414/85151MIPS/MHz圖 AVR32算邏單元直接相連允許在一個時鐘周期內(nèi)執(zhí)行的單條指令同時兩個獨立的寄存器這種結(jié)構(gòu)提高了代碼效率使AVRCISC10倍的性能AT90S4414/8515具有以下特 4K/8K字節(jié)FLASH256/512字節(jié) 256/512SRAM32I/0口32個通用工作寄存器具有比較模式的靈活的定時器/計數(shù)器內(nèi)外中斷源可編程的UART可編程的看門狗定時器SPI口以及兩種可通過軟件選擇的省電模式工作于空閑模式時CPU將停止運行而寄存器定時器/計數(shù)器看門狗和中斷系統(tǒng)繼續(xù)工作掉電模式時振蕩器停止工作所有功能都被而寄存器內(nèi)容得到保留ATMELFLASHISP接口或通用編程器多次編程通過將增強的RISC8位CPU與FLASH集成在一個內(nèi)4414/8515為許多嵌入式控制應(yīng)用提供了靈活而低成本的方案AT90S4414/8515具有一整套的編程和系統(tǒng)開發(fā)工具宏匯編調(diào)試/仿真器仿真AT90S4414和AT90S8515的比較AT90S4414具有4K字節(jié)程序FLASH256字節(jié)EEPROM256字節(jié)SRAMAT90S8515具有8K字節(jié)程序FLASH512字節(jié) 512字節(jié)表1是兩個器件器的簡單比表 器比型256256512512管腳配置管腳定義 GND電源A口PA7…PA0A8I/OA收20mA的電流可直接驅(qū)動LED 當(dāng)作為輸入時如果外部被拉低由于上拉電阻的存在管腳將輸出電流在復(fù)位過程中A口為三態(tài)即使此時時鐘還未起振B口B口是一個8位雙向I/O口每一個管腳都有內(nèi)部上拉電阻B口的輸出緩沖器能夠吸收20mA的電流可直接驅(qū)動LED 當(dāng)作為輸入時如果外部被拉低由于上拉電阻的存在管腳將輸出電流在復(fù)位過程中B口為三態(tài)即使此時時鐘還未起振C口C8I/O低由于上拉電阻的存在管腳將輸出電流在復(fù)位過程中C口為三態(tài)即使此時時鐘還未D口D7I/O20mA的電流當(dāng)作為輸入時如果外部被拉低由于上拉電阻的存在管腳將輸出電流在復(fù)位過程中D口為三態(tài)即使此時時鐘還未起振 復(fù)位輸入超過50ns50ns的脈沖不能保證可靠XTAL1振蕩器放大器的輸入端XTAL2振蕩器放大器的輸出端ICPT/C1輸入捕捉的輸入OCIBT/C1輸出比較BALE外部SRAM時的地址鎖存信號晶體振蕩器XTAL1XTAL2分別是片內(nèi)振蕩器的輸入輸出端可使用晶體振蕩器或是陶瓷振蕩器當(dāng)使用外部時鐘時XTAL2應(yīng)懸空圖 振蕩器連圖 結(jié)構(gòu)縱覽4AT90S4414/8515AVRRISC快速寄存器文件包含328位可單周期的通用寄存器這意味著在一個時鐘周期內(nèi)ALU可以完成一次如下操作寄存器文件中的兩個操作數(shù)執(zhí)行操作將結(jié)果存回6316運算能力其中Z指針還用于查表功能ALU除了寄存器操作模式通常的內(nèi)存模式也適用于寄存器文件這是因為AT90S4414/851532個最低的數(shù)據(jù)空間地址$00-$1F允許其象普通內(nèi)存地址一樣訪I/O64CPU外設(shè)的控制寄存器T/CI/O功能I/O內(nèi)存可以直接也可以作為數(shù)據(jù)地址$20-$5F來AVRHARVARD結(jié)構(gòu)程序和數(shù)據(jù)總線分離程序內(nèi)存通過兩段式的管道Pipeline進行當(dāng)CPU在執(zhí)行一條指令的同時就去取下一條指令這種預(yù)取指的概念使得指相對跳轉(zhuǎn)和相對調(diào)用指令可以直接2K/4K地址空間所有的AVR指令都為16位長每個程序內(nèi)存地址都包含一條16位或32位的指令當(dāng)執(zhí)行中斷和子程序調(diào)用時返回地址于堆棧中堆棧分布于通用數(shù)據(jù)SRAM之中SRAMSPSP16AVR結(jié)構(gòu)的內(nèi)存空間是圖 內(nèi)存映I/O有一個中斷向量由中斷向量組成的中斷向量表位于程序區(qū)的最前面中斷向量地址低通用工作寄存器文件圖 ……… 作 所有的寄存器操作指令都可以單指令的形式直接所有的寄存器例外情況為5條涉及常數(shù)操作的指令SBCISUBICPIANDI和ORI這些指令只能通用寄存器文件的后半部分R16到R31632個地址雖然寄存器文件的實現(xiàn)與SRAM不同這種內(nèi)存組織方式在寄存器方面具有極大XYZ寄存器寄存器R26~R31除了用作通用寄存器外還可以作為數(shù)據(jù)間接尋址用的地址指針圖7 XYZ寄存器 0707X 0707 0707ZAVRALU32個通用工作寄存器直接相連ALU3類算術(shù)邏輯和位操作可編AT90S4414/8515具有4K/8K字節(jié)的FLASH因為所有的指令為16位寬FLASH結(jié)構(gòu)為2K16/4K16 FLASH的擦除次數(shù)至少為1000次AT90S4414/8515的程序計數(shù) 為11/12位寬可以尋址到2048/4096個字的圖 寄存器文 ……I/O寄存 …………352/608個數(shù)據(jù)地址用于尋址寄存器文件I/O和SRAM起始的96個地址為寄存器文件+I/O256/512SRAMSRAMSRAM到64K-1當(dāng)SRAM的地址超出內(nèi)部SRAM的地址時MCU將對外部SRAM尋址指令相同內(nèi)部SRAM時/RD和/WR保持無效若要外部SRAM必須置位MCUCR的位外部SRAM比內(nèi)部的要多一個時鐘周期這意味著指令LDSTLDSSTSPOPSRAM5種直接帶偏移量的間接間接預(yù)減的間接后加的間接寄存器R26R31為間接尋址的指針寄存器YZ63個地址帶預(yù)減和后加的間接尋址模式要用到XYZ指針32個通用寄存器64個I/O寄存器256/512SRAM64K程序和數(shù)據(jù)尋址模式AT90S4414/8515支持強大而有效的尋址模 本節(jié)將要介紹各種尋址模單寄存器直接尋圖雙寄存器直接尋
圖I/O直接尋址圖數(shù)據(jù)直接尋址圖帶偏移的數(shù)據(jù)間接尋
圖數(shù)據(jù)間接尋址
圖帶預(yù)減的數(shù)據(jù)間接尋
圖帶后加的數(shù)據(jù)間接尋
圖使用LPM指令尋址常數(shù)圖間接程序?qū)ぶ稩JMP圖相對程序?qū)ぶ稲JMPAT90S4414/8515包含256/512字節(jié)的EEPROM它是作為一個獨立的數(shù)據(jù)空間而存在的可以按字節(jié)讀寫EEPROM的至少為100000次擦除 器數(shù)據(jù)寄存器和控制寄存器決定內(nèi)存和指令執(zhí)行時AVRCPU由系統(tǒng)時鐘驅(qū)動此時外部晶體直接產(chǎn)圖20說明了由HARVARD結(jié)構(gòu)決定了的并行取指和執(zhí)行以及快速寄存器文件的概念這是一個基本的達到1MIPS/MHz具有優(yōu)良的性價比功能/時鐘比功能/功耗比的流水2021演示的是寄存器文件內(nèi)部時序在一個時鐘周期里ALU2222I/O內(nèi)表 地址16 T/CMCU控制寄T/C0 8T/C1T/C1CDSPISPISPIAVR4414/8515的所有I/O和都被放置在I/O空間IN和OUT指令用來不同的I/O地址以及在32個通用寄存器之間傳輸數(shù)據(jù)地址為$00-$1FI/OSBI和CBI指令進行位尋址而SIBCSIBSINOUT指令時地址必須在$00-$3F之間如果要象SRAM一樣I/O寄存器則相應(yīng)地址要加上$20在本文檔里所有I/O寄存器的SRAM地址寫在括號中為了與后續(xù)產(chǎn)品兼容保留未用的未應(yīng)寫0而保留的I/O寄存器則不一些狀態(tài)標(biāo)志位的清除是通過寫1來實現(xiàn)的CBI和SBI指令已置位的標(biāo)志位時會回寫1因此會清除這些標(biāo)志位CBI和SBI指令只對$00-$1F有效I/O寄存器和控制寄存器在后續(xù)章節(jié)介76543210ITHSV76543210ITHSVNZC00000000$3F$5F 全局中斷使能置位時使能全局中斷單獨的中斷使能由個獨立控制寄存器控制如果I則不論單獨中斷標(biāo)志置位與否都不會產(chǎn)生中斷I在復(fù)位時RETI指令執(zhí)行后置位T位拷貝位拷貝指令BLD和BST利用T作為目的或源地址BST把寄存器的某一位拷貝到 BLD把T拷貝到寄存器的H半加標(biāo)志位S符號位 二進制補碼溢出標(biāo)志位N負數(shù)標(biāo)志位Z零標(biāo)志位C進位標(biāo)志位狀態(tài)寄存器在進入中斷和退出中斷時并不自動進行和恢復(fù)這項工作由軟件完堆棧指針8765432100000000000000000堆棧指針指向位于SRAM的函數(shù)及中斷堆棧堆??臻g必須在調(diào)用函數(shù)或中斷使能之前定義指針必須指向高于$60的地址用PUSH指令推數(shù)據(jù)入棧時堆棧指針將減一而當(dāng)調(diào)用函數(shù)或中斷時指針將減二使用POP指令時堆棧指針將加一而用RETRETI返回時指針將加二復(fù)位和中斷處理AT90S4414/851512個中斷源每個中斷源在程序空間都有一個獨立的中斷向量所有的中斷都有自己的使能位當(dāng)使能位置位且I也置位的情況下中斷可以發(fā)生3在中斷向量表中處于低地址的中斷具有高的優(yōu)先級所以RESET具有最高的優(yōu)先級表 1硬件管腳上電復(fù)位和看門狗復(fù)位234T/C1567T/C18T/C09 UARTUARTUARTPT1T1BT1T0SPIP SPH, <指令復(fù)位源上電復(fù)位當(dāng)電源電壓低于上電門限VPOT時MCU外部復(fù)位當(dāng)/RESET50nsMCU看門狗復(fù)位看門狗定時器超時后MCU在復(fù)位期間所有的I/O寄存器被設(shè)置為初始值程序從地址$000開始執(zhí)行$000地址中放置的指令必須為RJMP相對跳轉(zhuǎn)指令跳轉(zhuǎn)到復(fù)位處理例程若程序不需中斷則中斷向量就可放置通常的程序代碼圖23為復(fù)位電路的邏輯圖表3定義了復(fù)位電路的時序圖 復(fù)位邏表 復(fù)位電參數(shù)VCC=符參最小值典型值最大值單上電復(fù)位電壓門限上升V上電復(fù)位電壓門限下降V--V復(fù)位延遲周期FSTRT復(fù)位延遲周期FSTRT注1.除非電源電壓低于 WDT振蕩周期數(shù)示于表4看門狗振蕩器的頻率與工作電壓有關(guān)具體參見后續(xù)章節(jié)的典型特性5溢出時間WDT周期上電復(fù)位上電復(fù)位POR保證器件在上電時正確復(fù)位如圖23所示看門狗定時器驅(qū)動一個內(nèi)部MCUVCCVPOTFLASHFSTRTMCU如果內(nèi)置于片內(nèi)的啟動時間足夠的話/RESET可以與VCC直接相連或是外接上拉電阻如果在加上VCC的同時保持/RESET為低則可以延長復(fù)位周期例子可參看圖25圖 MCU起動/RESET與VCC相圖 MCU啟動/RESET由外電路控外部復(fù)位外部復(fù)位由外加于/RESET引腳的低電平產(chǎn)生大于50ns的復(fù)位脈沖將造成復(fù)位施加短脈沖不能保證可靠復(fù)位當(dāng)外加信號達到復(fù)位門限電壓VRST上升沿時tTOUT延時周期開始然后MCU啟動圖 看門狗復(fù)位當(dāng)看門狗定時器溢出時將產(chǎn)生1XTAL周期的復(fù)位脈沖在脈沖的下降沿延時定時器開始對tTOUT記數(shù)圖 中斷處理AT90S4414/8515有2個中斷控制寄存器GIMSK通用中斷寄存器和TIMSK一個中斷產(chǎn)生后全局中斷使能位I將被后續(xù)中斷被用戶可以在中斷例程里I置位從而開放中 執(zhí)行RETI后I重新置對于那些由可以保持為靜態(tài)的如輸出比較寄存器1與T/C1值相匹配驅(qū)動的中斷發(fā)生后中斷標(biāo)志將置位如果中斷標(biāo)志被清除而中斷條件仍然存在則標(biāo)志只有在新事當(dāng)程序計數(shù)器指向?qū)嶋H中斷向量開始執(zhí)行相應(yīng)的中斷例程時硬件清除對應(yīng)的中斷標(biāo)志一些中斷標(biāo)志位也可以通過軟件寫1 當(dāng)一個符合條件的中斷發(fā)生后如果相應(yīng)的中斷使能位為0則中斷標(biāo)志位掛起并一直保持到中斷執(zhí)行或者被軟件清除如果全局中斷標(biāo)志被則所有的中斷都不會被執(zhí)行直到I置位然后被掛起的各個中斷通用中斷屏通用中斷屏蔽寄存器 6543210------RRRRRR000000005…0INT1外部中斷1請求使能INT0I都為1時外部引腳中斷使能MCU通用控制寄存器MCUCR中的中1/0ISC11ISC101是上升沿中斷還是下降沿中斷或者是低電平中斷即使管腳被定義為輸出中斷仍可產(chǎn)生這是產(chǎn)生軟件中斷的一個途徑INT0外部中斷0請求使能INT0I都為1時外部引腳中斷使能MCU通用控制寄存器MCUCR中的中1/0ISC01ISC000電平中斷即使管腳被定義為輸出中斷仍可產(chǎn)生這是產(chǎn)生軟件中斷的一個途徑通用中斷標(biāo)志寄存器
76543210------RRRRRR000000005…0INTF1外部中斷標(biāo)志當(dāng)INT1管腳有觸發(fā)中斷請求時INTF1置位1如果SREG中的I及GIMSK中的INT1都為1則MCU將跳轉(zhuǎn)到中斷地址$002中斷例程執(zhí)行后此標(biāo)志被清除另外標(biāo)志也可以通過對其寫1來清除INTF0外部中斷標(biāo)志當(dāng)INT0管腳有觸發(fā)中斷請求時INTF0置位1如果SREG中的I及GIMSK中的INT0都為1則MCU將跳轉(zhuǎn)到中斷地址$001中斷例程執(zhí)行后此標(biāo)志被清除另外標(biāo)志也可以通過對其寫1來清除T/C中斷屏蔽寄存器
--- 初始 位 保TOIE1T/C1溢出中斷使當(dāng)TOIE1和I都為1 時T/C1溢出中斷使能當(dāng)T/C1溢出或TIFR中的TOV1位置位時中斷例程$006 OCIE1AT/C1輸出比A匹配中斷使能當(dāng)TOIE1A和I都為 時輸出比較A匹配中斷使能當(dāng)T/C1的比較A匹配發(fā)生TIFR中的OCF1A置位中斷例 將執(zhí)OCIE1BT/C1輸出比B匹配中斷使能當(dāng)TOIE1B和I都為 時輸出比較B匹配中斷使能當(dāng)T/C1的比較B匹配發(fā)生TIFR中的OCF1B置位中斷例 將執(zhí)TICIE1T/C1輸入捕捉中斷使能當(dāng)TICIE1和I都為1時輸入捕捉中斷使能當(dāng)T/C1的輸入捕捉發(fā)生ICPTIFR中的ICF1置位中斷例 將執(zhí)TOIE0T/C0溢出中斷使當(dāng)TOIE0和I都為1 時T/C0溢出中斷使能當(dāng)T/C0溢出或TIFR中的TOV0位置位時中斷例程$007 T/C中斷標(biāo)志寄存器76543210---RRR00000000位 保TOV1T/C1溢出中斷標(biāo)志位當(dāng)T/C1溢出時TOV1置位執(zhí)行相應(yīng)的中斷例程后此位硬件此外TOV1也可以通過寫1 來當(dāng)SREG中的位ITOIE1和TOV1一同置位時中斷例程得到執(zhí)行在模式中當(dāng)T/C1在$0000改變記數(shù)方向時TOV1置位OCF1A輸出比較標(biāo)志當(dāng)T/C1與OCR1A的值匹配時OCF1A置位此位在中斷例程里硬件或者通過對其寫1 來當(dāng)SREG中的位IOCIE1A和OCF1A一同置位時中斷例程得到執(zhí)行OCF1B輸出比較標(biāo)志1B當(dāng)T/C1與OCR1B的值匹配時OCF1B置位此位在中斷例程里硬件或者通過對寫 來當(dāng)SREG中的位 OCIE1B和OCF1B一同置位時中斷例程得到執(zhí)ICF1輸入捕捉標(biāo)志位當(dāng)輸入捕捉發(fā)生時ICF1置位表明T/C1的值已經(jīng)送到輸入捕捉寄存器ICR1此位在中斷例程里硬件或者通過對其寫1來當(dāng)SREG中的位ITICIE1A和ICF1一同置位時中斷例程得到執(zhí)行TOV0T/C0溢出中斷標(biāo)志位當(dāng)T/C0溢出時TOV0置位執(zhí)行相應(yīng)的中斷例程后此位硬件此外TOV0也可以通過寫1來當(dāng)SREG中的位ITOIE0和TOV0一同置位時中斷例程得到執(zhí)行外部中斷INT0和INT1引腳觸發(fā)應(yīng)當(dāng)注意如果中斷使能則即使INT0/INT1配置為輸出中斷照樣會被觸發(fā)此特點提供了一個產(chǎn)生軟件中斷的方法觸發(fā)方式可以為上升沿MCUMCUCR決定當(dāng)設(shè)置為低電平觸發(fā)時只要電平為低中斷就一直觸發(fā)中斷響應(yīng)時間AVR中斷響應(yīng)時間最少為4個時鐘周期在這4個時鐘期間PC 2個字節(jié)自動入棧而SP減2在通常情況下中斷向量為一個相對跳轉(zhuǎn)指令此跳轉(zhuǎn)要花2個時鐘周期如果中斷在一個多周期指令執(zhí)行期間發(fā)生則在此多周期指令執(zhí)行完后MCU才會執(zhí)行中斷程4個時鐘在此期間PC將被彈出棧SREGI被置位如果在中斷期間發(fā)生了其他中斷則AVR在退出中斷程序后要執(zhí)行一條主程序指令之后才能再響應(yīng)被要注意AVR硬件在中斷或子程序中并不操作狀態(tài)寄存器SREGSREG的由用戶軟對于那些由可以保持為靜態(tài)的如輸出比較寄存器1與T/C1值相匹配驅(qū)動的中斷發(fā)生后中斷標(biāo)志將置位如果中斷標(biāo)志被清除而中斷條件仍然存在則標(biāo)志只有在新事件發(fā)生后才會置位外部電平中斷會一直保持到中斷條件結(jié)束MCU控制寄存器 6543210 初始 0000000SRESRAM使能SRE為 時MCU可以外部 A C /WR引腳信號有效且自動按照要求配置端口方向寄存器如果SRE這些口可以當(dāng)作普通I/O口使用SRW外部SRAM等待狀當(dāng)SRW為 時對外部SRAM的執(zhí)行一般的3周期方案若SRW置位則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位否則可能INTnMCU時鐘的脈沖將觸發(fā)中斷如果選擇了低電平觸發(fā)則此電平必須保持到當(dāng)前執(zhí)行的指令結(jié)束休眠模式進入休眠模式的條件是SE為1然后執(zhí)行SLEEP指令使能的中斷將喚醒MCU完成中斷例程后MCUSLEEP以后的指令在休眠期間寄存器文件及I/O內(nèi)存的內(nèi)容不會丟失如果在休眠模式下復(fù)位則MCURESET向量$000處開始運行閑置模式SM為0時SLEEPMCU進入閑置模式在此模式下CPU停止運行而定時器/計數(shù)器看門狗和中斷系統(tǒng)繼續(xù)工作內(nèi)外部中斷都可以喚醒MCU如果不需要從模擬比較器中斷喚醒MCU為了減少功耗可以切斷比較器的電源方法是置位ACSR的ACD如果MCU從閑置模式喚醒CPU將立即執(zhí)行指令掉電模式SM為1時SLEEPMCU進入掉電模式在此模式下外部晶振停振而外部中斷及看門狗在使能的前提下繼續(xù)工作只有外部復(fù)位看門狗復(fù)位和外部電平中斷INT0INT1可以使MCU脫離掉電模式MCU時要注意保持低電平大于TTOUT的時間否則MCU繼續(xù)保持定時器/計數(shù)器AT90S4414/8515內(nèi)部有兩個通用定時器/8T/C16T/CT/C從同一個10位的預(yù)分頻定時器取得預(yù)分頻的時鐘T/C既可用作使用片內(nèi)時鐘的定時器也可T/C的預(yù)分頻器圖 T/C的預(yù)分頻4種可選的預(yù)分頻時鐘為 CK外部時鐘以及停止工作8
CK為振蕩器時鐘還可29T/C0圖 T/C0工作框T/C0CKCKT/C0控制寄存器TCCR0來停止它TIFR為狀態(tài)標(biāo)志寄存器TCCR0為控制寄存器而TIMSKT/C0T/C0CPU時間至少為一個CPU時鐘周期MCU在內(nèi)部CPU時鐘的上升沿對外部信號進行采樣在低預(yù)分頻條件下T/C0具有高分辨率和高精度的特點而在高預(yù)分頻條件下T/C0T/C0控制寄存器 6543210 ---- RRRR初始 00000007…3CS02CS01CS00時鐘選擇表 T/C0預(yù)分頻選000001010011100101110外部引腳 下降111外部引腳 上升當(dāng)T/C0由外部引腳T0驅(qū)動時即使PB0T0 配置為輸出管腳上的信號變化照樣可以使計數(shù)器發(fā)生相應(yīng)的變化這就為用戶提供了一個軟件控制的方法T/C0 00000000T/C0是可以進行讀/寫的向上計數(shù)器只要有時鐘輸入T/C0就會在寫入的值基礎(chǔ)上繼1630T/C1圖 T/C1工作框T/C1CKCKT/C1控制寄存器TCCR1ATCCR1B來停止它TIFRTIMSKT/C1的中斷T/C0CPU對信號的正確采樣要保證外部信號的轉(zhuǎn)換時間至少為一個CPU時鐘周期MCU在內(nèi)部CPU時鐘的上升沿對外部信號進行采樣在低預(yù)分頻條件下T/C1具有高分辨率和高精度的特點而在高預(yù)分頻條件下T/C1非常適用于低速功能如計時OCR1A/OCR1B作為數(shù)據(jù)源T/C1還可以實現(xiàn)輸出比較的功能此功能包括比較匹配A發(fā)生時清除計數(shù)器和比較輸出引腳的動作T/C1還可以用作89或10位的 調(diào)制器在此模式下計數(shù)器和OCR1A/OCR1B寄存器用作兩個無尖峰干擾的中心對稱的當(dāng)輸入捕捉引腳ICP發(fā)生相應(yīng)時T/C1的值將被傳到輸入捕捉寄存器ICR1捕TCCR1B控制此外模擬比較器也可以設(shè)置為觸發(fā)輸入捕捉ICP圖 ICP引腳原理44T/C1控制寄存A76543210--RR00000000位 保COM1A1COM1A0比較輸出模式1A1COM1A1和COM1A0決定T/C1的比較匹配發(fā)生時輸出引腳OC1A的動作這是I/O口的第二功能相應(yīng)的方向控制位要設(shè)置為1 以便將其配置為輸出具體配置見表9COM1B1COM1B0比較輸出模式1B位1和0COM1B1和COM1B0決定T/C1的比較匹配發(fā)生時輸出引腳OC1B的動表 比較1模式選描00011011X=A在模式這些位具有不同的功能細節(jié)見表 10選表 描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將復(fù)位為0若CTC1為0則T/C1將連續(xù)記數(shù)而不受比較匹配的影響由于比較匹配的檢測發(fā)生在匹配發(fā)生之后的一個CPU1A比較匹配寄存器的值設(shè)置為C時定時器的記數(shù)方式為…|C-2|C-1|C|0|18時定時器的記數(shù)方式則為…|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預(yù)分頻選描000001010011100101110外部引腳 下降111外部引腳 上升T/C1T1驅(qū)動時即使PB1T1配置為輸出管腳上的信號變化照樣可以使計數(shù)器發(fā)生相應(yīng)的變化這就為用戶提供了一個軟件控制的方法T/C1TCNT1H8765432100000000000000000此16位寄存器包含了T/C1的值當(dāng)CPU這兩個寄存器時為了保證高字節(jié)和低字節(jié)能夠同時讀寫要用到一個8位的臨時寄存器TEMP此寄存器在OCR1AOCR1B和ICR1的時候也要用到如果主程序和中斷程序在寄存器時都要用到TEMP那么在適CPUTCNT1HTEMP寄存器當(dāng)CPUTCNT1L時TEMPTCNT1因此在寫TCNT116位時首先要寫TCNT1H當(dāng)CPUTCNT1L時TCNT1L的數(shù)據(jù)將送入CPU同時TCNT1H將送入寄存器等到CPUTCNT1H時TEMP中的數(shù)據(jù)送入CPU因此在讀16位TCNT1時首先要T/C1是向上記數(shù)器或上/下記數(shù)器在 若T/C1被置數(shù)則T/C1將在預(yù)置T/C1輸出比較寄存器OCR1AHT/C1輸出比較寄存器OCR1AH87654321000000000000000008765432100000000000000000由于OCR1A/OCR1B為16位寄存器所以在時要用到TEMP寄存器以保證兩個字節(jié)的同步更新其讀寫過程與讀寫TCNT1相同T/C1輸入捕捉寄存器ICR1H876543210RRRRRRRRRRRRRRRR0000000000000000ICES1ICPTCNT1ICR1同時ICF1置位由于ICR1為16位寄存器所以在時要用到TEMP寄存器以保證同時兩個字節(jié)讀寫過程與讀寫TCNT1相同模式下的選擇模式后T/C1和輸出比較寄存器OCR1A/OCR1B共同組成兩個89或10位的無尖峰的自由運行的T/C1作為上/下計數(shù)器從0記數(shù)到 當(dāng)計數(shù)器中的數(shù)值和OCR1A/OCR1B的數(shù)值低 9或10位一致時 表 TOP值 頻分辨率TOP的值頻8$00FF2559$01FF51110$03FF1023表 模式下的比較1模式選000110置位 正11向下記數(shù)時的匹配清除OC1而向上記數(shù)時的匹配置位OC1 反向X=A注意在模式下OCR1A/OCR1B的低10位首先在一個臨時的位置等到T/C1TOPOCR1A/OCR1BOCR1A/OCR1B時由于失步而出現(xiàn)奇數(shù)長度的脈沖圖 失步的OCR1鎖如果在執(zhí)行寫和鎖存操作的時候OCR1A/OCR1B讀到的是臨時位置的數(shù)OCR1的值為$0000TOPOC1表 OCR1X=$0000或TOP時的輸10L10H11H11LX=A在模式下當(dāng)計數(shù)器達到$0000時將置位TOV1此時發(fā)生的中斷與正常情況下的中看門狗定時器VCC=5V的條件下典型振蕩頻率為1MHz通過調(diào)整定時器的預(yù)分頻因數(shù)8種可以改變看門狗復(fù)位時間間隔看門狗復(fù)位指令是WDTWDTMCU4414/8515從復(fù)位為了防止不關(guān)閉看門狗需要有一個特定的關(guān)閉程33看門狗定時器控制寄存器76543210---RRR000000007…5看門狗關(guān)閉使能14WDE看門狗使WDE為1 時看門狗使能只有在WDTOE為1 時WDE才能以下為關(guān)閉看在同一個指令內(nèi)對WDTOE和WDE寫邏輯 即使WDE已經(jīng)為14個時鐘之內(nèi)WDEWDP2…0預(yù)分頻表 000001010011100101110111注意看門狗的振蕩頻率于電壓有WDT應(yīng)該在看門狗使能之前執(zhí)行一次如果看門狗在復(fù)位之前使能則看門狗定時器有可能不是從0開始記數(shù)EEPROM讀/EEP的時間與電壓有關(guān)大概在2.5~4ms之間自定時功能可以讓用戶監(jiān)測何時開始寫下一字節(jié)如果用戶要操作EEPROM應(yīng)當(dāng)注意如下問題在電源濾波時間常數(shù)比較大的電路中上電/VCC上升/下降會比較慢此時MCU將工作于低于晶振所要求的電源EEP寫指令為了保證EEP的數(shù)據(jù)完整性建議使用電壓復(fù)位電路EEPROM寫操作需要執(zhí)行一個特定的寫時序具體參看后續(xù)內(nèi)容EEPROM讀/寫操作時CPU2個周期然后再執(zhí)行后續(xù)指令EEPROM地址寄存器 EEARH8 ------ 76543210 RRRRRR 000000XXXXXXXXX EEPROM的地址是線性的0EEPROM數(shù)據(jù)寄存器7654321000000000EEPROM寫操作EEDRDDAR單元的數(shù)據(jù)對于讀操作EEDR是從地址EEAR的數(shù)據(jù)EEPROM控制寄存器76543210-----RRRRR00000000EEMWEEEPROM主寫使能EEMWE決定是否EEWE為1EEPROMEEMWE為1時置位EEWE將把數(shù)據(jù)寫入EEPROM的指定地址若EEMWE為0則EEWE不起作用EEMWE置4個周期硬件對其EEWEEEPROM寫使EEPEEWEEEPROM寫時序如下第23步不是必須的EEMWE4個周期內(nèi)EEWE經(jīng)過寫時間VCC=2.7V時為4ms左右VCC=5V時為2.5ms左右之后EEWE硬件用戶可以憑此位判斷寫時序是否已經(jīng)完成EEWE置位后CPU要停止2個周期注意發(fā)生在步驟45EEP的中斷打斷了EEP操作RRAREEDR寄存器可能被修改引起EEP操作失敗建議此時關(guān)閉全局中斷標(biāo)志IEEREEEPROM讀使能當(dāng)EEP地址設(shè)置好之后需置位EERE以便將數(shù)據(jù)讀入EEDREERE表示EEPROM的數(shù)據(jù)已經(jīng)讀入EEDREEPROM數(shù)據(jù)的只需要一條指令且無需等待EERE置位后CPU要停止2個周期用戶在EEP時應(yīng)該檢測EEWE如果一個寫操作正在進行寫EEAR和EEDR將中EEP的寫入使得結(jié)果無法防止EEPROM數(shù)據(jù)毀由于電源電壓過低CPUEEPROM有可能工作不正常造成EEPROM數(shù)據(jù)的毀壞這種情況在使用獨立的EEPROM器件時也會遇到EEPROMEEPROM寫操作所需要的最低電壓二是CPU本身已經(jīng)無法正常工作當(dāng)電壓過低時保持/RESET信號為低這可以通過外加復(fù)位電路BOD 來完成有些AVR產(chǎn)品本身就內(nèi)含BOD電路看有關(guān)有效防止對EEPROM的誤操作將那些不需修改的常數(shù)于FLASH之串行外設(shè)接口串行外設(shè)接口SPI允許AT90S4414/8515和外設(shè)之間進行高速的同步數(shù)據(jù)傳輸全雙工3LSB在先MSB可從閑置模式喚醒作為從機時圖 SPI方框CPUSPI35PB7SCK為主機的時鐘輸出從機的時鐘輸出把數(shù)據(jù)SPISPI時鐘產(chǎn)生器數(shù)據(jù)從主機的PB5MOSI移出PB5MOSI移入移完一個字節(jié)后SPI時鐘停止并設(shè)置發(fā)送結(jié)束標(biāo)志此時如果SPCR的SPIESPI中斷使能置位則中斷若要選擇某器件為從機需要將從機選擇輸入PB4/SS16位循環(huán)移位寄存器當(dāng)數(shù)據(jù)從主機移向從機的同時數(shù)據(jù)也從從機移向主機這說明在移位過程當(dāng)中主從機進行了數(shù)據(jù)交換圖 SPI主從連SPI在發(fā)送方向有一個緩沖器而在接收方向有兩個緩沖器這意味著在移位周期沒有完全SPISPI數(shù)據(jù)寄存器之前SPI功能使能后MOSIMISOSCK和/SS表 SPI引腳配引方向主機方向從機/SS引腳功能SPI配置為主機時SPCRMSTR置位用戶可以決定/SS引腳的方向若/SS配置為I/OSPI如果/SS配置為輸入則/SS必須保持為保證SPI的正常工作若系統(tǒng)配置為主機/SS為輸入但被外設(shè)拉低則SPI控制器會將此低電平解釋為有一個外部主機將自己選擇為從機為了防止總線SPI系統(tǒng)遵如果SPCR的MSTR位為0則SPI為從機MOSI和SCK為輸SPSRSPIF置位SPI中斷和全局中斷開放則中斷例程將得到執(zhí)行因此在SPI主機使用中斷方式進行數(shù)據(jù)發(fā)送時/SS有可能被拉低中斷例程必須要檢測MSTR置位如果檢測到MSTR被用戶必須置位MSTR以便重新進入主機模式如果SPI配置為從機則/SS一直為輸入當(dāng)/SS為低時 SPI功能激活MISO成為輸出引腳而其他成為輸入如果/SS為高則所有相關(guān)引腳都為輸入SPI不接收任何數(shù)據(jù)要注意的是若/SS拉高SPI邏輯將復(fù)位如果在發(fā)送過程中/SS被拉高則數(shù)據(jù)傳輸馬上中斷數(shù)據(jù)模式SCK4種組合CPHACPOL控制組合的方式SPI數(shù)據(jù)傳輸格式見圖36和37圖 SPI傳輸格式CPHA=0DORD=0圖 SPI傳輸格式CPHA=1DORD=0SPI控制寄存器7654321000000000SPIESPI中斷使能SPESPI使能DORD數(shù)據(jù)次序DORD為1LSB先發(fā)送DORD為0MSB先發(fā)MSTR主從選擇MSTR置位時選擇主機模式否則為從機如果MSTR為1/SS為輸入但被拉低MSTR被SPIF置位用戶必須重新設(shè)置MSTR進入主機模CPOL時鐘極性CPHA時鐘相位3637SPR1SPR0SPI時鐘速率選擇位表 SCK和時鐘頻率之間的關(guān)00011011SPI狀態(tài)寄存器76543210------RRRRRR000000005…0SPIFSPI中斷標(biāo)志串行發(fā)送結(jié)束后SPIF置位即使此時/SS被拉低作為輸進入中斷例程后SPIF自動復(fù)位或者可以通過先讀SPSRSPDRSPIFWCOL寫碰撞標(biāo)志在SPI發(fā)送當(dāng)中對SPI數(shù)據(jù)寄存器SPDRWCOLWCOL可以通過先讀SPSR緊接著讀SPDR來SPI數(shù)據(jù)寄存器76543210XXXXXXXXAT90S4414/8515具有全雙工通用異步收發(fā) 其主要特點bps89數(shù)據(jù)發(fā)送
3個獨立的中斷發(fā)送結(jié)束發(fā)送數(shù)據(jù)寄存器空接收結(jié)束UARTUDRUDR的數(shù)據(jù)UDR若前一個字符的停止位還沒有移出移位寄存器則要等到停止位移出后UDR的數(shù)據(jù)圖 1011位收發(fā)器移位寄存器為空UDR中的數(shù)據(jù)將傳送到移位寄存器此時UDRE置位表明UART可以接收下一個數(shù)據(jù)當(dāng)數(shù)據(jù)送入移位寄存器的時候移位寄存器的0位起始位自動而位9和10停止位置位如果選擇了9位數(shù)據(jù)格式UART的CHR9置位則UCRTXB8將送到移位寄存器的位9UART首先在TXD引腳送出起始位然后是數(shù)據(jù)低位如果UDR里有新數(shù)據(jù)UART會在停止位發(fā)送完畢只有自動加載數(shù)據(jù)在加載數(shù)據(jù)的同時UDRE置位并一直保UDR如果UDR沒有新數(shù)據(jù)而且停止位也已經(jīng)輸出一個bit的長度則發(fā)送結(jié)束標(biāo)志TXC置位UCRTXENUART發(fā)送器當(dāng)TXEN為0時PD1I/O為1時UARTPD1數(shù)據(jù)接收圖圖 的前端以16倍于波特率的頻率對RXD引腳進行采樣如果在此管腳處于空閑狀態(tài)的時候檢測到低電平則認(rèn)為這是起始位的下降沿起始位檢列開始假定采樣1為第一CPU8910RXD3次連續(xù)采樣如果有兩個或全部采樣值為高則認(rèn)為當(dāng)前信號是一個虛起始位要丟棄MCU將開始等待新一次的1到0的轉(zhuǎn)換如果檢測到了一個有效的起始位MCU就會開始采樣數(shù)據(jù)數(shù)據(jù)位的檢測同樣是在采樣8910兩個或3個相同的值被認(rèn)為是當(dāng)前位的值圖40說明了采樣過程40當(dāng)停止位進入時3個采樣值當(dāng)中必須要有兩個以上為高否則USR中的幀錯誤標(biāo)FE置位在讀UDR之前用戶應(yīng)該檢查FEUDRUSRRXC置位UDR實際上是兩個物理上分離的寄存器一個用于發(fā)送一個用于接收UDR時的是接收UDR而在寫UDR時的是發(fā)送UDR如果數(shù)據(jù)格式為9位則UCR的RXB8在數(shù)據(jù)傳送到UDR時加載到發(fā)送移位寄存器的位9如果在UDR之前UART又接收到一個數(shù)據(jù)則USR的OR置位這表明數(shù)據(jù)無法轉(zhuǎn)移到UDR而丟失了OR一直保持到UDR被因此如果波特率比較高或者CPU負載比較重用戶應(yīng)該在讀UDR時首先檢測OR標(biāo)志如果RXEN為 則不工作PD0可以用作普通I/O口而若RXEN置位則 UCRCHR9為199UCRTXB8要在寫UDR之前設(shè)置而接收到的第9位是RXB8UART控制UART數(shù)據(jù)寄存器7654321000000000UDR實際上是兩個物理上分離的寄存器一個用于發(fā)送一個用于接收UDR時訪問的是接收UDR而在寫UDR時的是發(fā)送UDR U---RRRRRRRR001000002…0RXCUART接收結(jié)束RXC置位表示接收到的數(shù)據(jù)已經(jīng)從接收移位寄存器傳送到UDR但是不管數(shù)據(jù)是否有誤如果RXCIE為1則RXC置位時將引起接收結(jié)束中斷RXC在讀UDR時自動被清除如果采用中斷方式則中斷例程必須讀一次UDR以清除RXC否則中斷結(jié)束后又會中TXCUART發(fā)送結(jié)束TXCUDR中沒有新的要發(fā)送的數(shù)據(jù)在半雙工通信應(yīng)用當(dāng)中由于發(fā)送器在發(fā)送完數(shù)據(jù)之后要立即轉(zhuǎn)換到接收模式所以這個標(biāo)志如果TXCIE已置位則TXC置位將發(fā)送結(jié)束中斷進入中斷例程后TXC自動或者用戶可以對其寫1以達到的目的UDREUART數(shù)據(jù)寄存器空UDR傳送到發(fā)送移位寄存器后UDRE置位表明發(fā)送器已經(jīng)準(zhǔn)備好接收新的要當(dāng)UDRIE置位則只要UDRE為1UART發(fā)送結(jié)束中斷就可以執(zhí)行寫UDR將復(fù)位UDREUARTUDR以清除UDRE否則中斷將連續(xù)發(fā)生UDRE的初始值為1FE幀錯誤MCU檢測到幀錯誤如檢測到停止位為0 當(dāng)檢測到數(shù)據(jù)停止位為1 時FE復(fù)位OR過速UDR未讀而新的數(shù)據(jù)又已進入移位寄存器ORUART控制寄存器76543210RW00000010RXCIE接收結(jié)束中斷使能TXCIE發(fā)送結(jié)束中斷使能UDRIEUART數(shù)據(jù)寄存器空中斷使能RXEN接收使能使能UART接收接收將導(dǎo)致TXCOR和FE無法置位同時也不能復(fù)位已經(jīng)置位的TXEN發(fā)送使能TXEN不能立即關(guān)閉發(fā)送器如果發(fā)送器當(dāng)前正在發(fā)送的話只有等到發(fā)送完畢后發(fā)送CHR99MCU99位字符的讀/RXB8/TXB89位RXB89位TXB8發(fā)送的第9位發(fā)送字符的第9位波特率產(chǎn)生器
BAUD f16UBRR式中16UBRRfCK=UBRRUART波特率寄存器的內(nèi)容0-255表 %%%%UBR 26378256713341223011201110000%%%%UBR 867894567333422231112%%%%UBR- 19178956783345UART波特率寄存 6543210 初始 0000000模擬比較器模擬比較器比較正輸入端PB2AIN0 和負輸入端PB3AIN1 的值如果PB2AIN0的電壓高于PB3AIN1的值比較器的輸出ACO將置位此輸出可用來觸發(fā)模擬比較器中斷上升沿下降沿或電平變換 也可以觸發(fā)T/C1的輸入捕捉功能其框圖如圖41所41模擬比模擬比較器控制和狀 6543210-RR00000000
位 保ACD模擬比較器當(dāng)ACD為1 時模擬比較器的電源將切斷可以在任何時候?qū)ζ渲梦灰躁P(guān)閉模擬比較器這樣可以減少器件的功耗改變ACD時要注意模擬比較器的中斷否則有可能不ACO模擬比較器輸 模擬比較器中斷標(biāo)志ACIACIS1ACIS0ACII都為1則CPU執(zhí)行比較器中斷例程進入中斷例程后ACI被硬件此外ACI也可以通過對此位寫1來達到的目的要注意的是如果ACSR的另一些位被SBI或CBI指令修改時ACI亦被ACIE模擬比較器中斷使能ACIE為 時比較器中斷使ACIC模擬比較器輸入捕捉使能ACIC為 時T/C1的輸入捕捉功能由比較器中斷觸發(fā)此時比較器的輸出與的輸入捕捉前端直接相連T/C1的輸入捕捉噪聲抑制和邊沿選擇仍然適用如果ACIC T/C1沒有關(guān)聯(lián)為了使能比較器驅(qū)動的T/C1輸入捕捉中斷ACIS1ACIS0模擬比較器中斷模式選擇表 中斷模式000110ACO11ACO注意改變ACIS1/ACIS0時要注意模擬比較器的中斷否則有可能不必要的中外部SRAM接口A口低字節(jié)地址與數(shù)據(jù)總線C口高字節(jié)地址總線ALE/RD和 SRAMMCUCRSRESRE置位后A口的端口配置將自動改變?nèi)鬝RE為0則外部SRAM相應(yīng)端口用作普通I/O口ALE從高變?yōu)榈蜁rA口的數(shù)據(jù)為有效的地址ALE保持為低外部SRAM使能后內(nèi)部SRAM時在ALE引腳可能出現(xiàn)短脈沖但是在外部SRAM的過程中ALE信號是穩(wěn)定的42AVRSRAM8位G如圖43所示在缺省狀態(tài)下外部SRAM需要3個時鐘如果需要一個額外的等待周MCUCRSRW位結(jié)果見圖44在兩種情況下A口作為數(shù)據(jù)總線的時間都是一個周期一旦數(shù)據(jù)接收完畢A口立即變成低字節(jié)地址總線68圖 圖圖 圖 腳的方向值/使能上拉時不會無意地改變其他管腳的方向值/使能上拉AA口有3個I/O地址數(shù)據(jù)寄存器PORTA$1B 數(shù)據(jù)方向寄存器DDRA $3A和輸入引腳PINA$19 PORTA和DDRA可讀可寫PINA只可讀20mA的電流能夠直接驅(qū)動LED當(dāng)管腳被拉低時如果上拉電阻已經(jīng)激活則引腳會輸出電流當(dāng)SRE置位時A口用作外部SRAM的第二功能A口數(shù)據(jù)寄存器7654321000000000A口數(shù)據(jù)方向寄存器 00000000A口輸入腳地址76543210RRRRRRRRPINA不是一個寄存器這個地址用來A口的物理值PORTA時讀到的是A口鎖存的數(shù)據(jù)而PINA時讀到的是施加于引腳上的邏輯數(shù)值A(chǔ)口用作通用數(shù)字I/O時A8PAn通用I/O引腳DDRA中的DDAn選擇引腳的方向如果DDAn為1則PAn為輸出腳如果DDAn為0則PAn為輸入腳在復(fù)位期間A口為三態(tài)口表 A口的配00N三態(tài)高阻01Y10N11N 6…0A口示意圖圖 A口示意圖PA0-PA7BB口有3個I/O地址數(shù)據(jù)寄存器PORTB$18 數(shù)據(jù)方向寄存器DDRB$17$37和輸入引腳PINB PORTB和DDRB可讀可寫PINB只可20mA的電流能夠直接驅(qū)動LED當(dāng)管腳被拉低 如果上拉電阻已經(jīng)激 則引腳會輸出電表 B口第二功管第二功能 T/C0 T/C1 SPI 程 程 SCK當(dāng)使用B口的第二功能時DDRB和PORTB要設(shè)置成B口數(shù)據(jù)寄存器7654321000000000B口數(shù)據(jù)方向寄存器 6543210 初始 0000000B口輸入引腳地址 6543210 RRRRRRR PINB不是一個寄存器這個地址用來B口的物理值PORTB時讀到的是B口鎖存的數(shù)據(jù)而PINB時讀到的是施加于引腳上的邏輯數(shù)值B口用作通用數(shù)字I/O時B8PBn通用I/O引腳DDRB中的DDBn選擇引腳的方向如果DDBn為1則PBn為輸出腳如果DDBn為0則PBn為輸入腳在復(fù)位期間B口為三態(tài)口表B00N三態(tài)高阻01Y10N11NnB 6…0口的第二功能SCKSPI的值而當(dāng)SPI為主機時SCKPB7DDB7 SPI的值而當(dāng)SPI為主機時MISOPB6DDB6 SPI的值而當(dāng)SPI為主機時MOSIPB5DDB5 DDB4的值/SS 配置為主機時此引腳的方向由DDB4控制如果DDB4為1則上拉仍然可以由PORTB4控制 當(dāng)配置為輸入 無上拉電阻PB3=0時為模擬比較器的負輸入 當(dāng)配置為輸入 無上拉電阻PB2=0時為模擬比較器的正輸入 B口示意圖圖圖 B口示意圖PB0和圖 B口示意圖PB2和PB3圖 B口示意圖PB4圖 B口示意圖PB5圖 B口示意圖PB6圖 B口示意圖PB7CC8I/OC口有3個I/O地址數(shù)據(jù)寄存器PORTC$15 數(shù)據(jù)方向寄存器DDRC$14$34和輸入引腳 PORTC和DDRC可讀可寫PINC只可20mA的電流能夠直接驅(qū)動LED當(dāng)管腳被拉低 如果上拉電阻已經(jīng)激 則引腳會輸出電C口具有與外部SRAM相關(guān)的第二功能此時C可以配置為高字節(jié)地址輸出這能由SRE控制C口數(shù)據(jù)寄存器7654321000000000C口數(shù)據(jù)方向寄存器7654321000000000C口輸入腳地址76543210RRRRRRRRPINC不是一個寄存器這個地址用來C口的物理值PORTC時讀到的是C口鎖存的數(shù)據(jù)而PINC時讀到的是施加于引腳上的邏輯數(shù)值C口用作通用數(shù)字I/O時C8PCn通用I/O引腳DDRC中的 選擇引腳的方向如果 為1則PCn為輸出腳如果 為0則PCn為輸入腳在復(fù)位期間C口為三態(tài)口表 C口的配00N三態(tài)高阻01Y10N11N 6…0圖圖 C口示意圖PC0-DD8I/OD口有3個I/O地址數(shù)據(jù)寄存器PORTD$12 數(shù)據(jù)方向寄存器DDRD $31 和輸入引腳PIND PORTD和DDRD可讀可寫PIND只可讀D20mA的電流能夠直接驅(qū)動LED當(dāng)管腳被拉低時如果上拉電阻已經(jīng)激活則引腳會輸出電流表 D口第二功管第二功能 0 1OC1AT/C1AD口數(shù)據(jù)寄存器7654321000000000D口數(shù)方向寄存器7654321000000000D口輸引腳地址76543210RRRRRRRRPIND不是一個寄存器這個地址用來D口的物理值PORTD時讀到的是D口鎖存的數(shù)據(jù)而PIND時讀到的是施加于引腳上的邏輯數(shù)值D口用作通用數(shù)字 通用I/O引腳DDRD中的DDDn選擇引腳的方向如果DDDn為1則PDn為輸出腳如果DDDn為0則PDn為輸入腳在復(fù)位期間D口為三態(tài)口表 D口的配00N三態(tài)高阻01Y10N11N 6…0D口的第二功能 OC1APD5可以用作T/C1PD5OC1A也是 接收數(shù)據(jù)引腳使能后引腳自動配置為輸入而不管 若此時為1則上拉有D圖圖 D口示意圖圖 D口示意圖PD1圖 D口示意圖PD2和PD3圖 D口示意圖PD4圖圖 D口示意圖圖 D口示意圖PD6圖 D口示意圖PD7程序編程程序和數(shù)據(jù)鎖定位AT90S4414/8515具有兩個鎖定 如表26所示鎖定位只能通過片擦除命令擦表 程序鎖定位保護類型模111201300注意 在并行編程模式下熔斷位編程也被要先編程熔斷位然后編程鎖定熔斷位AT90S4414/8515有兩個熔斷 SPIEN和SPIEN編程為 后串行程序使能缺省值為0FSTRT編程為0 后MCU選擇短起動時間缺省值為1量大時用戶也可以訂購缺省值為0 串 熔斷位只能在并 廠Atmel3字節(jié)的廠標(biāo)用以識別器件此代碼在串行或并行模式下都可以其位置為 $1EAtmel生產(chǎn)的 8K 當(dāng)$01地址為$93時8515 $1EAtmel生產(chǎn)的 4K 當(dāng)$01地址為$93時44143$00$01和編程FLASHAT90S4414/85154K/8KFLASH256/512EEPROM在出廠時已經(jīng)被擦除為1器件支持+12V高壓并行編程和低壓串行編程+12V只用來使能高壓編程不會有明顯的電流流過在兩種編程模式下FLASHEEPROM片內(nèi)集成了自擦和自定時除功能在編程時要注意電源電壓要滿足要求27型串行編程并行編程2.7V–4.5V–2.7V–4.5V–并行編程FLASHEEPROM圖 并行編信號命名AT90S4414/8515的某些管腳在本節(jié)將以并行編程的信號來命名XA1/XA0決定了當(dāng)當(dāng)驅(qū)動/WE或/OE時執(zhí)行加載表 管腳命編程時的信號名稱管功O 器件忙 I輸出使能低電平I寫脈沖低電平I字節(jié)選擇0低字 IIPB0-雙向數(shù)據(jù)總線/OE表 XTAL1給正脈沖后的操作00加載FLASH或EEPROM的地址BS決定是地址還是低位地01加載數(shù)據(jù)BS決定 101 命令字節(jié)執(zhí)行的命令01000010000100010000000000000000進入編程模式拉低/RESET和 等待至少給/RESET11.5~12.5VBS在/RESET加上+12V100ns之內(nèi)發(fā)生動作將導(dǎo)致器件無法進入編程模式擦除FLASHEEPROM以及鎖定位在FLASHEEPROM完全擦除之FLASHEEPROM重新加載擦除命令設(shè)置XA1XA0為 BS為0設(shè)置DATA為1000 擦除命XTAL1一個正脈沖加載命令給/WE施加一個tWLWH_CE的負脈沖擦除命令在RDY/BSYFLASH編程設(shè)置XA1XA0為 BS為0設(shè)置DATA為0001 寫FLASH命XTAL1一個正脈沖加載命令設(shè)置XA1XA0為 設(shè)置BS為 設(shè)置DATA=地址的字節(jié)$00-給XTAL1一個正脈沖加載地址的字設(shè)置XA1XA0為 設(shè)置BS為 DATA=地址的低位字節(jié)$00~$FFXTAL1一個正脈沖加載地址的低位字節(jié)設(shè)置XA1XA0為 DATA=數(shù)據(jù)的低位字節(jié)$00~$FF XTAL1一個正脈沖加載數(shù)據(jù)的低位字節(jié)設(shè)置BS為 給/WR一個負脈沖開始編程數(shù)據(jù)同時RDY/BSY RDY/BSY波形見圖61設(shè)置XA1XA0為 設(shè)置DATA=數(shù)據(jù)的字節(jié)XTAL1一個正脈沖加載數(shù)據(jù)的低位字節(jié)設(shè)置BS為 選擇數(shù)給/WR一個負脈沖開始編程數(shù)據(jù)同時RDY/BSY RDY/BSY波形見圖62器件在編程時保存加載令和地址為了有效地進行編程請注意以下幾當(dāng)寫讀多個內(nèi)存地址時命令只需加載一次僅在編程新的頁256字節(jié)時才需要加載地址字因為擦除之后所有的FLASH和EEPROM的內(nèi)容都為1 故數(shù)據(jù)為$FF時可以EEPROM的編程以及FLASHEEPROM6162 A加載命令0000 B加載地址的字節(jié) 加載地址的低位字節(jié)$00~$FF設(shè)置/OE和BS為0此時可以從DATA總線讀FLASH數(shù)據(jù)的低位字設(shè)置BS為1此時可以讀FLASH數(shù)據(jù)的字設(shè)置/OE為1編程 A加載命令0001AT90S8515B加載地址的字節(jié)$00~$01 加載地址的低位字節(jié)$00~$FF 加載數(shù)據(jù)的低位字節(jié)$00~$FF 讀 A加載命令0000AT90S8515B加載地址的字節(jié)$00~$01 加載地址的低位字節(jié)$00~$3F設(shè)置/OE和BS為0此時可以從DATA總線數(shù)據(jù)的低位字設(shè)置/OE為1編程熔斷位 A加載命令0100 加載數(shù)據(jù)的低位字節(jié)Bitn 代表要編 代表要擦Bit5=SPIENBit0 Bit7-6,4-1 1這些位是保留給/WR施加一個tWLWH_PFB的負脈沖此命令在RDY/BSY引腳沒有編程鎖定位 A加載命令0010 加載數(shù)據(jù)的低位字節(jié)Bitn 代表要編Bit2=LockBit2Bit1=LockBit1Bit7-3,0 1這些位是保留 讀熔斷位和鎖定 A加載命令0000設(shè)置/OE為0BS為1此時可以從DATA總線數(shù)Bit7=LockBit1Bit6=LockBit2Bit5=SPIENBit0=FSTRT設(shè)置/OE為1讀廠標(biāo) A加載命令0000C加載數(shù)據(jù)的低位字節(jié)$00~$02設(shè)置/OE為0BS為0設(shè)置/OE為1并行編程特性圖 表 并行編程特性TA= VCC=5VVAData&ControlSetupbeforeXTAL1XTAL1Lowto/WRXTAL1Lowto/OE/WRPulseWidthLowforChip5B/WRPulseWidthLowforProgrammingFuse注意 如果tWLWH保持地比tWLRH長則看不見RDY/BSY串行當(dāng)/RESET拉到地時FLASH和EEPROM可以利用SPI總線進行串行串行接口包括SCKMOSI輸入和MISO輸出/RESET拉低后在進行編程/擦除之前首先要執(zhí)行圖 EEPROM由于其本身有自動擦除功能和自定時功能因此更新時無需擦除擦除指令將使FLASH和EEPROM的內(nèi)容全部變?yōu)?FFFLASH和EEPROM的地址對于AT90S8515FLASH的范圍是$0000~$0FFF 對于AT90S4414FLASH的范圍是 XTAL1引腳輸入或是將晶振接到XTAL1XTAL2SCK脈沖的最小高低電低2XTAL1時鐘高2XTAL1串行編程算法進行串行編程時數(shù)據(jù)在SCKAT90S4414/8515SCK的下降沿輸出至少等待 然后在 如果通訊失步則串行編程將失敗如果同步則在寫編程使能命令第3個字節(jié)的時候器件會響應(yīng)第二個字節(jié)$53 不論響應(yīng)正確與否4字節(jié)指令必須發(fā)完如果響應(yīng)不是$53SCK32次都沒如果此時執(zhí)行了擦除指令則須等待tWD_ERASE 然后在/RESET上施加正脈沖回到第FLASHEEPROMtWD_PROG的時間對于擦除過的器件數(shù)據(jù)$FF就用不著再寫了 讀編程結(jié)束后可以把/RESET拉高進入正常工作模式下電過程如果需要的話XTAL1RC振蕩器把/RESET拉高EEPROM數(shù)據(jù)檢測EEPROM時如果內(nèi)部的自擦除過程沒有結(jié)束讀正在寫的地址會得到P1自擦除過程結(jié)束后器件則返回P2P1和P2的定義見表27當(dāng)寫過程結(jié)束后的數(shù)據(jù)則為寫入P1P2就不可以用這種方法了此時應(yīng)當(dāng)在編程新數(shù)據(jù)之前至少等待tWD_PROG的時間如果在編程EEPROM之前已經(jīng)進行過擦除則數(shù)據(jù)$FF就可以不用再編程了表 型FLASH數(shù)據(jù)檢測寫FLASH時如果內(nèi)部寫過程沒有結(jié)束則正在寫的地址時會得到返回值$7F否則結(jié)果為寫入的數(shù)據(jù)但是對于數(shù)據(jù) 間如果在編程FLASH之前已經(jīng)進行過擦除則數(shù)據(jù)$FF就可以不用再編程圖 表 指指令格式操字節(jié)字節(jié)字節(jié)字節(jié)10100101xxxxxxxx1010100xxxxxxxxxFLASH00100000oooo從字地址a:b高或低字節(jié)01000000iiiiH高或低字節(jié)10100000oooo從地址 數(shù)據(jù)11000000iiii1010111xXxxxxxxx0011xxxxXxxxoooo從地址b讀廠標(biāo)注意a=b=H0低地址1o=輸出數(shù)據(jù)i=輸入數(shù)據(jù)x=任意1=Lock2=Lock注意廠標(biāo)不能在鎖定模式3串行編程電特性66表34串行編程電特性TA=- 到 VCC=2.7V–符參最小值典型值最大值單1/振蕩頻率VCC2.7V–04振蕩周期VCC2.7V–1/振蕩頻率VCC=4.0V08振蕩周期VCC=4.0VSCK2SCKMOSISetuptoSCKMOSIHoldafterSCK35符36符直流特性TA=- 到 VCC=2.7V–符參條最小值典型值最大值單-0.3VCCV-0.2VCCV0.6VCCVCCV0.8VCCVCCV0.9VCCVCCV3BDIOL=20mAVCC=5VIOL=10mAVCC=V4BDIOH=20mAVCC=5VIOH=10mAVCC=V流I/OVCC=6VpinA輸 VCC=6Vpin流I/O阻kI/Ok工作狀態(tài)VCC3V閑置狀態(tài)VCC3VWDT使能VCC9A VCC=AVCC=流VCC=5VVIN=VCC-VCC=1最大值代表保證可以 2最小值代表保證可以 D0–D5和ZTAL2的IOL之和過100mAB0–B7和D6的IOL之和過100mAD0–D5和ZTAL2的IOH之和 過100mAB0–B7和D6的IOH之和 過100mA掉電時的最小VCC為外部時鐘驅(qū)動波形
圖 外部時外部時鐘符參單最小值最
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025內(nèi)外貿(mào)一體化認(rèn)證服務(wù)指南-機器人產(chǎn)業(yè)
- 2026江蘇南京市教育局直屬學(xué)校招聘教師103人考試備考試題及答案解析
- 2026年黑河市口腔醫(yī)院招聘非在編人員備考題庫及一套參考答案詳解
- 2026年畢節(jié)市納雍希鳴高級中學(xué)招生工作專項人員招聘備考題庫含答案詳解
- 2026年鄭州新鄭天佑中醫(yī)院(原新鄭市中醫(yī)院)招聘備考題庫帶答案詳解
- 元陽縣大坪鄉(xiāng)衛(wèi)生院2026年招聘編外人員備考題庫參考答案詳解
- 2026年浙江雷博人力資源開發(fā)有限公司招聘備考題庫(社會招聘)及答案詳解一套
- 2026年茂名市茂南區(qū)現(xiàn)場公開招聘急需緊缺人才6人備考題庫含答案詳解
- 2026年霞林學(xué)校初中部自主招聘編外教師備考題庫及一套完整答案詳解
- 臨海市教育系統(tǒng)(初中)面向2026年普通高校畢業(yè)生公開招聘教師備考題庫完整答案詳解
- 2025年時事政治考試100題(含參考答案)
- 一例伴精神病性癥狀重度抑郁發(fā)作患者的護理查房
- 2025年初中語文綜合素質(zhì)測試考試題及答案
- 成都天府新區(qū)施工圍擋設(shè)置導(dǎo)則方案文本
- 職業(yè)道德與法治知識點總結(jié)2025屆中職高考復(fù)習(xí)高教版
- 超星爾雅學(xué)習(xí)通《光影中國(上海大學(xué))》2025章節(jié)測試附答案
- 2025電力系統(tǒng)動態(tài)記錄裝置技術(shù)規(guī)范
- 2024-2025學(xué)年江蘇省南通市通州區(qū)五年級(上)期末數(shù)學(xué)試卷(含答案)
- (高清版)DB36∕T 1919-2023 水質(zhì) 無機元素的現(xiàn)場快速測定 便攜式單波長激發(fā)-能量色散X射線熒光光譜法
- 暖通自控培訓(xùn)
- 江蘇省常州市2024-2025學(xué)年七年級上學(xué)期期末道德與法治試卷(含答案)
評論
0/150
提交評論