芯片-avr中文參考at90s大多數(shù)為單指令周期_第1頁
芯片-avr中文參考at90s大多數(shù)為單指令周期_第2頁
芯片-avr中文參考at90s大多數(shù)為單指令周期_第3頁
芯片-avr中文參考at90s大多數(shù)為單指令周期_第4頁
芯片-avr中文參考at90s大多數(shù)為單指令周期_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

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

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

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

圖 D口示意圖圖 D口示意圖D口示意圖D口示意圖PD2D口示意圖D口示意圖PD4圖 D口示意圖程序編程程序和數(shù)據(jù)鎖定位AT90S2313具有兩個(gè)鎖定 如表21所示鎖定位只能通過片擦除命令擦表 程序鎖定位保護(hù)類型模111201300注意 在并行編程模式下熔斷位編程也 要先編程熔斷位然后編程鎖定熔斷位AT90S2313有兩個(gè)熔斷 SPIEN和SPIEN編程為0后串行程序使能缺省值為0FSTRT編程為0后MCU選擇短起動(dòng)時(shí)間缺省值為1量大時(shí)用戶也可以訂購缺省值為0 串 熔斷位只能在并 廠所有的Atmel微處理器都有3字節(jié)的廠標(biāo)用以識(shí)別器件此代碼在串行或并行模式下都可 $912K字節(jié)的 $01當(dāng)$01地址為$91時(shí)器件為23133$00$01和編程FLASHAT90S23132KFLASH128EEPROM在出廠時(shí)已經(jīng)被擦除為1器件支持+12V高壓并行編程和低壓串行編程+12V只用來使能高壓編程不在兩種編程模式下FLASHEEPROM片內(nèi)集成了自擦和自定時(shí)除功能在編程時(shí)要注意電源電壓要滿足要求22型串行編程并行編程2.7V–4.5V–并行編程FLASHEEPROM圖 并行編信號(hào)命名當(dāng)驅(qū)動(dòng)/WE或/OE時(shí)執(zhí)行加載表 管腳命編程時(shí)的信號(hào)名稱管功O 器件忙 I輸出使能低電平I寫脈沖低電平I字節(jié)選 低字 高字節(jié)IIPB0-雙向數(shù)據(jù)總線/OE為低時(shí)輸出表 XTAL1給正脈沖后的操作00加載FLASH或EEPROM的地址BS決定 01加載數(shù)據(jù)BS決定 1011表 命令字節(jié)執(zhí)行的命令100001000010000100010000000000000000進(jìn)入編程模式拉低/RESET和 等待至少給/RESET11.5~12.5VBS在/RESET加上+12V100ns之內(nèi)發(fā)生動(dòng)作將導(dǎo)致器件無法進(jìn)入編程模式擦除FLASHEEPROM以及鎖定位在FLASHEEPROM完全擦除之FLASHEEPROM重新加載擦除命令設(shè)置XA1XA0為 BS為0設(shè)置DATA為1000 擦除命XTAL1一個(gè)正脈沖加載命令給/WE施加一個(gè)tWLWH_CE的負(fù)脈沖擦除命令在RDY/BSY引腳沒有反饋FLASH編程設(shè)置XA1XA0為 BS為0設(shè)置DATA為0001 寫FLASH命XTAL1一個(gè)正脈沖加載命令加 設(shè)置XA1XA0為 設(shè)置BS為 設(shè)置DATA=地址的字節(jié)$00-給XTAL1一個(gè)正脈沖加載地址的字設(shè)置XA1XA0為 設(shè)置BS為 設(shè)置DATA=地址的低位字節(jié)$00~$FFXTAL1一個(gè)正脈沖加載地址的低位字節(jié)設(shè)置XA1XA0為 設(shè)置DATA=數(shù)據(jù)的低位字節(jié)$00~$FF XTAL1一個(gè)正脈沖加載數(shù)據(jù)的低位字節(jié)設(shè)置BS為 給/WR一個(gè)負(fù)脈沖開始編程數(shù)據(jù)同時(shí)RDY/BSYRDY/BSY變高然后開始編程下一字節(jié)波形見圖50設(shè)置XA1XA0為 設(shè)置DATA=數(shù)據(jù)的字節(jié)XTAL1一個(gè)正脈沖加載數(shù)據(jù)的低位字節(jié)設(shè)置BS為 選擇數(shù)給/WR一個(gè)負(fù)脈沖開始編程數(shù)據(jù)同時(shí)RDY/BSY等待RDY/BSY變高然后開始編程下一字節(jié)波形見圖51器件在編程時(shí)保存加載令和地址為了有效地進(jìn)行編程請(qǐng)注意以下幾當(dāng)寫讀多個(gè)內(nèi)存地址時(shí)命令只需加載一僅在編程新的頁256字節(jié)時(shí)才需要加載地址字因?yàn)椴脸笏械腇LASH和EEPROM的內(nèi)容都為1故數(shù)據(jù)為$FF時(shí)可以EEPROM的編程以及FLASHEEPROM5051 A加載命令0000B加載地址的字節(jié) 加載地址的低位字節(jié)$00~$FF設(shè)置/OE和BS為0此時(shí)可以從DATA總線讀FLASH數(shù)據(jù)的低位字設(shè)置BS為1此時(shí)可以讀FLASH數(shù)據(jù)的字設(shè)置/OE為1編程 A加載命令0001B加載地址的低位字節(jié)$00~$3F 加載數(shù)據(jù)的低位字節(jié)$00~$FF 讀 A加載命令0000B加載地址的低位字節(jié)設(shè)置/OE和BS為0此時(shí)可以從DATA總 數(shù)據(jù)的低位字設(shè)置/OE為1編程熔斷位 A加載命令0100 加載數(shù)據(jù)的低位字節(jié)Bitn 代表要編 代表要擦Bit5=SPIENBit0 Bit7-6,4-1 1這些位是保留給/WR施加一個(gè)tWLWH_PFB的負(fù)脈沖此命令在RDY/BSY引腳沒有編程鎖定位 A加載命令0010 加載數(shù)據(jù)的低位字節(jié)Bitn 代表要編Bit2=LockBit2Bit1=LockBit1Bit7-3,0 1這些位是保留 讀熔斷位和鎖定 A加載命令0000設(shè)置/OE為0BS為1此時(shí)可以從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注1在擦除時(shí)使用tWLWH_CE而在編程鎖定位是使用2tWLWHtWLRH長則看不見RDY/BSY脈串當(dāng)/RESET拉到地時(shí)FLASH和EEPROM可以利用SPI總線進(jìn)行串 SCKMOSI和 /RESET拉低后在進(jìn)行編程/擦除之前首先要執(zhí)行編程使能指圖 EEPROM由于其本身有自動(dòng)擦除功能和自定時(shí)功能因此更新時(shí)無需擦除擦除指令將使FLASH和EEPROM的內(nèi)容全部變?yōu)?FFFLASH和EEPROM的地址是分離的FLASH的范圍是 EEPROM的范圍XTAL1引腳輸入或是將晶振接到XTAL1XTAL2SCK脈沖的最小高低電低2XTAL1時(shí)鐘高2XTAL1串行編程算法進(jìn)行串行編程時(shí)數(shù)據(jù)在SCKAT90S2313SCK的下降沿輸出至少等待 然后在MOSIPB5串行輸入編程使能指3個(gè)字節(jié)的時(shí)候器件會(huì)響應(yīng)第二個(gè)字節(jié)$53不論響應(yīng)正確與否4字節(jié)指令必須發(fā)完如果響應(yīng)不是$53SCK32次都沒如果此時(shí)執(zhí)行了擦除指令則須等待tWD_ERASE 然后在/RESET上施加正脈沖回到第FLASHEEPROMtWD_PROG的時(shí)間對(duì)于擦除過的器件數(shù)據(jù)$FF就用不著再寫了任意一個(gè)內(nèi)存地址都可以用讀指令在MISOPB6讀編程結(jié)束后可以把/RESET拉高進(jìn)入正常工作模式下電過程如果需要的將XTAL1拉低如果沒有用外部晶振或者用的是內(nèi)部RC振蕩器把/RESET拉高EEPROM數(shù)據(jù)檢測(cè)EEPROM時(shí)如果內(nèi)部的自擦除過程沒有結(jié)束讀正在寫的地址會(huì)得到P1自擦除過程結(jié)束后器件則返回P2P1和P2的定義見表27當(dāng)寫過程結(jié)束后的數(shù)據(jù)則為寫入P1P2就不可以用這種方法了此時(shí)應(yīng)當(dāng)在編程新數(shù)據(jù)之前至少等待tWD_PROG的時(shí)間如果在編程EEPROM之前已經(jīng)進(jìn)行過擦除則數(shù)據(jù)$FF就可以不用再編程了表 型FLASH數(shù)據(jù)檢測(cè)寫FLASH時(shí)如果內(nèi)部寫過程沒有結(jié)束則正在寫的地址時(shí)會(huì)得到返回值$7F否則結(jié)果為寫入的數(shù)據(jù)但是對(duì)于數(shù)據(jù) 間如果在編程FLASH之前已經(jīng)進(jìn)行過擦除則數(shù)據(jù)$FF就可以不用再編程圖 表 指指令格式操字節(jié)字節(jié)字節(jié)字節(jié)10100101xxxxxxxx1010100xxxxxxxxxFLASH00100000oooo從字地址a:b高或低字節(jié)o01000000iiii寫H高或低字101000000bbboooo從地址 數(shù)據(jù)11000000iiii1010111xxxxxxxxx0011xxxxxxxxoooo從地址b讀廠標(biāo) a=地址高b=地址H0低地址1o=輸出數(shù)i=輸入數(shù)x=任1=Lock2=Lock注意廠標(biāo)不能在鎖定模式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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論