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

下載本文檔

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

文檔簡介

特AVRRISC結(jié)構(gòu)AVR高性能低功耗RISC結(jié)構(gòu)118條指 大多數(shù)為單指令周32個8位通用工作寄存工作10MHz時具有10MIPS的性數(shù)據(jù)和非易失性程序內(nèi)存2K字節(jié)的在線可編程FLASH擦除次數(shù)1000次128字節(jié)128字節(jié)可編程 100000次程序加密位Peripheral特點—個可預(yù)分頻Prescale的8位定時器/計數(shù)器可編程的看門狗定時器由片內(nèi)振蕩器生成用于下載程序的SPI特別的MCU特點低功耗空閑和掉電模式內(nèi)外部中斷源上電復(fù)位電路可選擇的片內(nèi)RC振蕩器規(guī)范Specification低功耗高速CMOS工藝全靜態(tài)工作4MHz3V25條件下的功耗工作模式2.4mA空閑模式掉電模式<1I/O和封裝3個可編程的I/O腳AT90S/LS23235個可編程的I/O腳AT90S/LS23438PDIPSOIC封裝工作電壓2.7V-6.0VAT90LS2323/AT90LS23434.0V-6.0VAT90S2323/AT90S2343速0-4MHzAT90LS2323/2343/AT90LS23430-10MHzAT90S2323/2343/AT90S2343描AT90S2323/2343AVRRISCCMOS8期內(nèi)執(zhí)行一條指令A(yù)T90S2323/23431MIPS/MHzAVR核將32個工作寄存器和豐富的指令集聯(lián)結(jié)在一起所有的工作寄存器都與ALU算邏單元直接相連允許在一個時鐘周期內(nèi)執(zhí)行的單條指令同時兩個獨立的寄存器這種結(jié)構(gòu)提高了代碼效率使AVR得到了比普通CISC單片機高將近10倍的性能圖1 圖 AT90S2323/23432KFLASH128EEPROM1283AT90S/LS2323/5AT90S/LS2343個通用I/0口32個通用工作寄存器8位定時器/計數(shù)器內(nèi)外中斷源可編程的看門狗定時器程序用的SPI口以及兩種可通過軟件選擇的省電模式工作于空閑模式時CPU將停止運行而寄存器定時器/計數(shù)器看門狗和中斷系統(tǒng)繼續(xù)工作掉電模式時振蕩器停止工作所有功能都被而寄存器內(nèi)容得到器件是以ATMEL的高密度非易失性內(nèi)存技術(shù)生產(chǎn)的片內(nèi)FLASH可以通過ISP接口或通用編程器多次編程通過將增強的RISC8位CPU與FLASH集成在一個 2323/2343為許多嵌入式控制應(yīng)用提供了靈活而低成本的方案AT90S2323/2343具有一整套的編程和系統(tǒng)開發(fā)工具宏匯編調(diào)試/仿真器仿真器和AT90S/LS2323和AT90S/LS2343的比AT90S/LS2323適用于外接晶振或陶瓷振蕩器起動時間可選1ms晶振或16ms陶瓷振蕩器有3個I/O口 適用于外接振蕩源或選擇片內(nèi)振蕩器作為時 有5個I/O表 差異型有無無有是固定的 管腳配置AT90S/LS2323的管腳定義 GND電源B口PB2…PB0B口是一個3位雙向I/O口每一個管腳都有內(nèi)部上拉電阻可單獨選擇在復(fù)位過程B口為三態(tài)即使此時時鐘還未起振 復(fù)位輸入超過50ns50ns的脈沖不能保證可靠XTAL1XTAL2AT90S/LS2343的管腳定義 GND電源B口PB4…PB0B口是一個5位雙向I/O口每一個管腳都有內(nèi)部上拉電阻可單獨選擇當(dāng)選用外部時時PB3作為時鐘輸入端在復(fù)位過程中B口為三態(tài)即使此時時鐘還未起振 復(fù)位輸入超過50ns50ns的脈沖不能保證可靠CLOCK時鐘選擇晶AT90S/LS2323具有一個反向放大器可用作為片內(nèi)振蕩器如圖3所示如果不用外部時的話推薦使用AT90S/LS2343以得到的I/O腳結(jié)構(gòu)縱覽

圖 振蕩器連圖 5AT90S2323/2343AVRRISC快速寄存器文件包含32個8位可單周期的通用寄存器這意味著在一個時鐘周期內(nèi)ALU可以完成一次如下操作寄存器文件中的兩個操作數(shù)執(zhí)行操作將結(jié)果存回6316運算能力其中Z指針還用于查表功能ALU除了寄存器操作模式通常的內(nèi)存模式也適用于寄存器文件這是因為AT90S2323/2343為寄存器文件分配了32個最低的數(shù)據(jù)空間地址$00-$1F允許其象普通內(nèi)存地址一樣訪I/O64CPU外設(shè)的控制寄存器T/CI/O功能I/O內(nèi)存可以直接也可以作為數(shù)據(jù)地址$20-$5F來AVR采用了HARVARD結(jié)構(gòu)程序和數(shù)據(jù)總線分離程序內(nèi)存通過兩段式的管道Pipeline進行當(dāng)CPU在執(zhí)行一條指令的同時就去取下一條指令這種預(yù)取指的概念使得指相對跳轉(zhuǎn)和相對調(diào)用指令可以直接1K地址空間大多數(shù)的AVR指令為16位長每個程序內(nèi)存地址都包含一條16位或32位的指令當(dāng)執(zhí)行中斷和子程序調(diào)用時返回地址于堆棧中堆棧分布于通用數(shù)據(jù)SRAM之中SRAM數(shù)量的限制用戶應(yīng)該在復(fù)位例程里就初始化SPSP8AVR結(jié)構(gòu)的內(nèi)存空間是圖 內(nèi)存映EEPROM數(shù)據(jù) I/O有一個中斷向量由中斷向量組成的中斷向量表位于程序區(qū)的最前面中斷向量地址低通用工作寄存器文件圖 70…通用工作…寄存 所有的寄存器操作指令都可以單指令的形式直接所有的寄存器例外情況為5條涉及常數(shù)操作的指令SBCISUBICPIANDI和ORI這些指令只能通用寄存器文件的后半部分R16到R31732個地址雖然寄存器文件的實現(xiàn)與SRAM不同這種內(nèi)存組織方式在寄存器方面具有極大XYZ寄存器寄存器R26~R31除了用作通用寄存器外還可以作為數(shù)據(jù)間接尋址用的地址指針圖8 XYZ寄存器 0707X 0707 0707ZAVRALU32個通用工作寄存器直接相連ALU3類算術(shù)邏輯和位操作可編AT90S2323/23432KFLASH16位寬FLASH結(jié)構(gòu)1K AT90S2323/2343的程序計數(shù)器PC為10位寬可以尋址到1024個字的FLASH程序AT90S2323/2343包含128字節(jié)的EEPROM它是作為一個獨立的數(shù)據(jù)空間而存在的可以按字節(jié)讀寫EEPROM的至少為100000次擦除 EEPROM的由地址寄存器圖 寄存器文 ……I/O寄存 ………224個數(shù)據(jù)地址用于尋址寄存器文件I/OSRAM96個地址為寄存器文件+I/O其后的128個地址用于尋址SRAM5種直接帶偏移量的間接間接預(yù)減的間接后加的間接寄存器R26R31為間接尋址的指針寄存器YZ63個地址帶預(yù)減和后加的間接尋址模式要用到XYZ指針32個通用寄存器64I/O128SRAM可以被所有的尋址模式程序和數(shù)據(jù)尋址模式AT90S2323/2343支持強大而有效的尋址模式 單寄存器直接尋址圖雙寄存器直接尋

圖I/O直接尋址圖數(shù)據(jù)直接尋址

圖帶偏移的數(shù)據(jù)間接尋

圖數(shù)據(jù)間接尋址

圖帶預(yù)減的數(shù)據(jù)間接尋

圖帶后加的數(shù)據(jù)間接尋

圖使用LPM指令尋址常數(shù)圖間接程序?qū)ぶ稩JMP圖相對程序?qū)ぶ稲JMP圖內(nèi)存和指令執(zhí)行時AVRCPU由系統(tǒng)時鐘驅(qū)動此時外部晶體直接產(chǎn)圖20說明了由HARVARD結(jié)構(gòu)決定了的并行取指和執(zhí)行以及快速寄存器文件的概念這是一個基本的達(dá)到1MIPS/MHz優(yōu)良的性價比功能/時鐘比功能/功耗比的流水線概2121演示的是寄存器文件內(nèi)部時序在一個時鐘周期里ALU2323I/O內(nèi)表 地址16進制 T/CMCU控制寄MCU狀態(tài)寄T/C0T/C08位AVR2323/2343I/O和都被放置在I/O空間INOUT指令用來不同的I/O地址以及在32個通用寄存器之間傳輸數(shù)據(jù)地址為$00-$1FI/OSBI和CBI指令進行位尋址而SIBCSIBSINOUT指令時地址必須在$00-$3FSRAM一樣I/O寄存器則相應(yīng)地址要加上$20在本文檔里所有I/O寄存器的SRAM地址寫在括號中為了與后續(xù)產(chǎn)品兼容保留未用的未應(yīng)寫0而保留的I/O寄存器則不應(yīng)一些狀態(tài)標(biāo)志位的清除是通過寫1來實現(xiàn)的CBI和SBI指令已置位的標(biāo)志位時會回寫1因此會清除這些標(biāo)志位CBI和SBI指令只對$00-$1F有效I/O寄存器和控制寄存器在后續(xù)章節(jié)介狀態(tài)寄存器 StatusRegisterITHSVNZC ITHSVNZC$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負(fù)數(shù)標(biāo)志位Z零標(biāo)志位C進位標(biāo)志位狀態(tài)寄存器在進入中斷和退出中斷時并不自動進行和恢復(fù)這項工作由軟件完堆棧指針 $3D$5D00000000堆棧指針指向位于SRAM的函數(shù)及中斷堆棧堆??臻g必須在調(diào)用函數(shù)或中斷使能之前定義指針必須指向高于$60的地址用PUSH指令推數(shù)據(jù)入棧時堆棧指針將減一而當(dāng)調(diào)用函數(shù)或中斷時指針將減二使用POP指令時堆棧指針將加一而用RETRETI返回時指針將加二復(fù)位和中斷處理AT90S2323/23432個中斷源每個中斷源在程序空間都有一個獨立的中斷向量所有的中斷事件都有自己的使能位當(dāng)使能位置位且I也置位的情況下中斷可以發(fā)生3在中斷向量表中處于低地址的中斷具有高的優(yōu)先級所以RESET具有最高的優(yōu)先級表 1硬件管腳上電復(fù)位和看門狗復(fù)位27 T/C0T0R16,<指令復(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ù)位處理例程若程序不需中斷則中斷向量就可放置通常的程序代碼圖24為復(fù)位電路的邏輯圖表4定義了復(fù)位電路的時序圖 復(fù)位邏AT90S/LS2323具有可編程的上電起動時間FSTRT編程時選擇的是最短的起動時間出廠AT90S/LS2343具有固定的表 復(fù)位電參數(shù)VCC=符參最小值典型值最大值單上電復(fù)位電壓門限上升V上電復(fù)位電壓門限下降V-V復(fù)位延遲周期FSTRT未編程2323復(fù)位延遲周期FSTRT已編程2323復(fù)位延遲周期2343s注1.除非電源電壓低于 表 復(fù)位電參數(shù)VCC=符參最小值典型值最大值單上電復(fù)位電壓門限上升V上電復(fù)位電壓門限下降V-V復(fù)位延遲周期FSTRT未編程2323復(fù)位延遲周期FSTRT已編程2323復(fù)位延遲周期2343s注1.除非電源電壓低于 WDT振蕩周期數(shù)示于5看門狗振蕩器的頻率與工作電壓有關(guān)具體參見后續(xù)章節(jié)的典型特性上電復(fù)位AT90S2323/2343設(shè)計為可以由RC振蕩AT90S/SL2343片內(nèi)振蕩器或外部時驅(qū)動VCC達(dá)到VPOT后MCU要等待tTOUT的時間才起動如果時外部時提供則在VCC達(dá)到給定頻率所要求的電壓之前不要加載時鐘信號對于AT90S2323用戶可以選擇不同的起動時間振蕩周期數(shù)見表6AT90S2343的起動時間僅為1個看門狗周期6溢出時間WDT周期圖 MCU起動/RESET與VCC相圖 MCU啟動/RESET由外電路控外部復(fù)位外部復(fù)位由外加于/RESET引腳的低電平產(chǎn)生大于50ns的復(fù)位脈沖將造成復(fù)位施加短脈沖不能保證可靠復(fù)位當(dāng)外加信號達(dá)到復(fù)位門限電壓 上升沿時tTOUT延時期開始然后MCU圖 看門狗復(fù)位當(dāng)看門狗定時器溢出時將產(chǎn)生1XTAL周期的復(fù)位脈沖在脈沖的下降沿延時定時器開始對tTOUT記數(shù)圖 MCU狀態(tài)寄存器 6543210 ----- RRRRR初始 000007…2EXTRF外部復(fù)位標(biāo)志上電復(fù)位時這一位沒有定義X外部復(fù)位時置位看門狗復(fù)位對其沒有影PORF上電復(fù)位標(biāo)志表 復(fù)位后的PORF和復(fù)位源11如果要利用PORF和EXTRF來識別復(fù)位條件用戶軟件要盡早對其清零檢查PORF和EXTRF表 復(fù)位源鑒復(fù)位源00011011中斷處理AT90S2323/2343有2個中斷控制寄存器GIMSK通用中斷寄存器和TIMSK一個中斷產(chǎn)生后全局中斷使能位I將被清零后續(xù)中斷 I置位從而開放中 執(zhí)行RETI后I重新置當(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置位然后被掛起的各個中斷進入中斷和退出中斷時MCU不會自動保存或恢復(fù)狀態(tài)寄存器故爾需由通用中斷屏蔽寄存器

76543210-------RRRRRRR0000000075…0INT0外部中斷0請求使能當(dāng)INT0和I都為1時外部引腳中斷使能MCU通用控制寄存器MCUCR中的斷檢測控制位1/0ISC01和ISC00定義中斷0是上升沿中斷還是下降沿中斷或者是低電平中斷即使管腳被定義為輸出中斷仍可產(chǎn)生通用中斷標(biāo)志寄存器 6543210 ------ RRRRRR初始 0000000位 5…0保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中斷蔽寄存器76543210-------RRRRRRR000000007…2TOIE0T/C0溢出中斷使當(dāng)TOIE0和I都為1 時T/C0溢出中斷使能當(dāng)T/C0溢出或TIFR中的TOV0位置位時中斷例程$002得到執(zhí)行T/C中斷標(biāo)志寄存器76543210-------RRRRRRR00000000位7…2 保TOV0T/C0溢出中斷標(biāo)志位當(dāng)T/C0溢出時TOV0置位執(zhí)行相應(yīng)的中斷例程后此位硬件清零此外TOV0也可以通過寫1 來清零當(dāng)SREG中的位ITOIE0和TOV0一同置位時中斷例程得到執(zhí)行外部中斷外部中斷由INT0引腳觸發(fā)應(yīng)當(dāng)注意如果中斷使能則即使INT0/INT1配置為輸出中斷照樣會被觸發(fā)此特點提供了一個產(chǎn)生軟件中斷的方法觸發(fā)方式可以為上升沿下降沿或低電平這些設(shè)置由MCU控制寄存器MCUCR決定當(dāng)設(shè)置為低電平觸發(fā)時只要電平為低中斷就一直觸發(fā)中斷響應(yīng)時間AVR中斷響應(yīng)時間最少為4個時鐘周期在這4個時鐘期間PC2個字節(jié)自動入棧SP22個時鐘周期如MCU才會執(zhí)行中斷程4個時鐘在此期間PC將被彈出棧SREGI被置位如果在中斷期間發(fā)生了其他中斷則AVR在退出中斷程序后要執(zhí)行一條主程序指令之后才能再響應(yīng)被MCU控制寄存器 6543210 --- RRR初始 0000000位 SE休眠使能SLEEP指令時SEMCUMCU進入休眠建議與SLEEP指令相連使用SM休眠模式此位用于選擇休眠模式SM為 時為閑置模式SM為 ISC01ISC00中斷檢測控制01和位INT0中斷的邊沿或電平如下表所示表 中斷0檢測控描00011011注意改變ISC01/ISC00時首先要INT0清除GIMSK的INT0位否則可能休眠模式進入休眠模式的條件是SE為1然后執(zhí)行SLEEP指令使能的中斷將喚醒MCU完成中斷例程后MCUSLEEP以后的指令在休眠期間寄存器文件及I/O內(nèi)存的內(nèi)容不會丟失如果在休眠模式下復(fù)位則MCU從RESET向量$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ù)器AT90S2323/23438位通用定時器/計數(shù)器T/C0T/C010位的預(yù)分頻定時器取得預(yù)分頻的時鐘T/C0既可用作使用片內(nèi)時鐘的定時器也可用作對外部觸發(fā)信號記T/C的預(yù)分頻器圖 T/C0的預(yù)分頻4種可選的預(yù)分頻時鐘為CK/8 CK/256和CK/1024CK為振蕩器時鐘還可以選擇CK外部時鐘以及停止工作829T/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ū)動時即使PD4T0配置為輸出管腳上的信號變化照樣可以使計數(shù)器發(fā)生相應(yīng)的變化這就為用戶提供了一個軟件控制的方法T/C0767654321000000000T/C0是可以進行讀/寫的向上計數(shù)器只要有時鐘輸入T/C0就會在寫入的值基礎(chǔ)上向看門狗定時器看門狗定時器由片內(nèi)獨立的振蕩器驅(qū)動通過調(diào)整定時器的預(yù)分頻因數(shù)8種可以改變看門狗復(fù)位時間間隔看門狗復(fù)位指令是WDT如果定時時間已經(jīng)到而且沒有執(zhí)行WDT指令則看門狗將復(fù)位MCU2323/2343從復(fù)位地址重新開始執(zhí)行為了防止不關(guān)閉看門狗需要有一個特定的關(guān)閉程31看門狗定時器控制寄存器76543210---RRR000000007…5WDTOE看門狗關(guān)閉使能WDE清零時此位必須為1才能關(guān)閉看門狗在置位的4個時鐘后WDE看門狗使WDE為1 時看門狗使能只有在WDTOE為1 時WDE才能清零以下為關(guān)閉看 即使WDE已經(jīng)為14個時鐘之內(nèi)WDEWDP2…0預(yù)分頻表 000001010011100101110111注意看門狗的振蕩頻率于電壓有關(guān)WDT應(yīng)該在看門狗使能之前執(zhí)行一次如果看門狗在復(fù)位之前使能則看門狗定時器有可能不是從0開始記數(shù)EEPROM讀/EEP的時間與電壓有關(guān)大概在2.5~4ms之間自定時功能可以讓用戶監(jiān)測何時開始寫EEPROM寫操作需要執(zhí)行一個特定的寫時序具體參看后續(xù)內(nèi)容EEPROM讀/寫操作時CPU2個周期然后再執(zhí)行后續(xù)指令EEPROM地址寄存器 543210-R0XXXXXXX位 保EEPROM數(shù)據(jù)寄存器7654321000000000EEPROM寫操作EEDRDDAR單元的數(shù)據(jù)對于讀操作EEDR是從地址EEAR的數(shù)據(jù)EEPROM控制寄存器76543210-----RRRRR000000007…3EEMWEEEPROM主寫使能EEMWEEEWE為1

當(dāng)EEMWE為1時置位當(dāng)將把數(shù)據(jù)寫入EEPROM的指定地址若EEMWE為0 則EEWE不起作用EEMWE置位后4個周期硬件對其清零EEWEEEPROM寫使當(dāng)EEP數(shù)據(jù)和地址設(shè)置好之后需置位EEWE以便將數(shù)據(jù)寫入EEPROM寫時序如下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讀使能EEPEEREEEDREEREEEPROM的數(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之I/O口B腳的方向值 /使能上拉時不會無意地改變其他管腳的方向值/使能上拉對于AT90S/LS2323B口是3位雙向I/O口對于AT90S/LS2343B口是5位雙向I/O口請注意PORTBDDRB和PINB的位3和4對AT90S/LS2323不適用B口有3個I/O地址數(shù)據(jù)寄存器PORTB$18$38數(shù)據(jù)方向寄存器DDRB$17$37和輸入引腳PINB$16$36PORTB和DDRB可讀可寫PINB只可20mA的電流能夠直接驅(qū)動LED當(dāng)管腳被拉低 如果上拉電阻已經(jīng)激 則引腳會輸出電表 B口第二功管第二功能MOSI程 INT0外部中斷0輸入SCK程序時的串行時T0T/C0的記數(shù)時鐘輸入CLOCK時鐘輸入僅適用于當(dāng)使用B口的第二功能時DDRB和PORTB要設(shè)置成B口數(shù)據(jù)寄存器76543210---RRR00000000B口B口數(shù)據(jù)方向寄存器 6543210---RRR000000007654321076543210---RRRRRRRR000PINB不是一個寄存器這個地址用來B口的物理值PORTB時讀到的是B口鎖存的數(shù)據(jù)而PINB時讀到的是施加于引腳上的邏輯數(shù)值B口用作通用數(shù)字I/O時B1PBnI/O引腳DDRBDDBn選擇引腳的方向如果DDBn為出腳如果DDBn為0則PBn為輸入腳在復(fù)位期間B口為三態(tài)口1表 B口的配

PBn00N三態(tài)高阻01Y10N11N 6…0B口的第二功能CLOCKKAT90S/LS2343的時鐘輸入當(dāng)RCEN為0時器件以內(nèi)部RC振蕩器為時鐘此引腳作為通用I/O口如果RCEN沒有編程則需要外接時 程序編程程序和數(shù)據(jù)鎖定位AT90S2323/2343具有兩個鎖定 如表14所示鎖定位只能通過片擦除命令擦表 程序鎖定位保護類型模111201300注意1 在高壓串行編程模式下熔斷位編程也被 要先編程熔斷位然后編程鎖定熔斷位AT90S/LS2323有兩個熔斷 SPIEN和SPIEN編程為

后串行程序使能缺省值為0串行程序時不FSTRT編程為0后MCU選擇短起動時間缺省值為 1FSTRT的改變只能AT90S/LS2343有兩個熔斷 SPIEN和SPIEN編程為

后串行程序使能缺省值為0串行程序時不RCEN編程為0后MCU選擇內(nèi)部RC振蕩器作為時鐘缺省值為0廠Atmel3AT90S/LS2323 2KFLASH 當(dāng)$01地址為$91時AT90S/LS2343 2KFLASH 當(dāng)$01地址為$91時3$00$01和編程FLASHAT90S2323/23432KFLASH128EEPROM在出廠時已經(jīng)被擦除為1器件支持+12V高壓串行編程和低壓串行編程+12V只用來使能高壓編程在兩種編程模式下FLASHEEPROM片內(nèi)集成了自擦和自定時除功能在編程時要注意電源電壓要滿足要求表 型低壓串行編程高壓串行編程4.0V–4.5V–2.7V–4.5V–4.0V–4.5V–2.7V–4.5V–高壓串行編程圖 編程算法上電序列在VCC和GND之間加上4.5–5.5V電壓拉低PB5和PB0并保持至少100ns改變PB3的電平至少4次脈寬至少為100ns 將PB3拉低等待至少100ns /RESET加上12V的電壓并在PB0變化之前保持至少100ns在繼續(xù)后續(xù)指令前等待至少8sFLASH的編程以字節(jié)為單位首先加地址然后是數(shù)據(jù)PB2RDY/BSY變高說明EEPROM的編程以字節(jié)為單位首先加地址然后是數(shù)據(jù)PB2RDY/BSY變高說明下電序列拉低PB3置位PB51 圖 表 指指令格式注指令指令指令指令23則指令3后要等待PB2變高指令3后要等待PB2變高指令3后要等待PB2變高0_11StWLWH_PFBSF為0代0_11StWLWH_PFBSR為0代指令4后要等PB2變高21=01_2S12F為0表1_2S12R為0以其注 a=地址的高比特b=i=輸入的數(shù)據(jù)o=輸出的數(shù)據(jù)x=不用管1=2=F=R=S=高壓串行編程特性34表 高壓串行編程特性TA= VCC=5V脈沖高寬SCIXTAL1/PB3脈沖低寬SDIPB0SIIPB1有效到SCISCI高后SDIPB0SIIPB1保SCIXTAL1/PB3高到SDOPB2有5B低壓串行當(dāng)/RESET拉到地時FLASH和EEPROM可以利用SPI總線進行串 SCKMOSI和 /RESET拉低后在進行編程/擦除之前首先要執(zhí)行編程使能指圖 EEPROM由于其本身有自動擦除功能和自定時功能因此更新時無需擦除擦除指令將使FLASH和EEPROM的內(nèi)容全部變?yōu)?FFFLASH和EEPROM的地址是分離的FLASH的范圍是 EEPROM的范圍時鐘可以從XTAL1/PB3引腳輸入或者使用內(nèi)部RC振蕩器僅對2343有效SCK脈低2XTAL1高2XTAL1串行編程算法進行串行編程時數(shù)據(jù)在SCKAT90S2323/2343SCK的下降沿輸出至少等待 然后在MOSIPB0串行輸入編程使能指3個字節(jié)的時候器件會響應(yīng)第二個字節(jié)$53不論響應(yīng)正確與否4字節(jié)指令必須發(fā)完如果響應(yīng)不是$53SCK32如果此時執(zhí)行了擦除指令則須等待tWD_ERASE 然后在/RESET上施加正脈沖回到第FLASHEEPROMtWD_PROG的時間對于擦除過的器件數(shù)據(jù)$FF就用不著再寫了任意一個內(nèi)存地址都可以用讀指令在MISOPB1讀編程結(jié)束后可以把/RESET拉高進入正常工作模式下電過程如果需要的話將XTAL1拉低如果沒有用外部晶振或者用的是內(nèi)部RC振蕩器把/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é)束則正在寫的地址時會得到返回值$FF否則結(jié)果為寫入的數(shù)據(jù)但是對于數(shù)據(jù) 間如果在編程FLASH之前已經(jīng)進行過擦除則數(shù)據(jù)$FF就可以不用再編程圖 表 指指令格

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論