80C單片機(jī)" title="51單片機(jī)" target="_blank">51單片機(jī)的上電復(fù)位POR(Pmver On Reset)實質(zhì)上就是上電延時復(fù)位,也就是在上電延時期間把單片機(jī)鎖定在復(fù)位狀態(tài)上,。為什么在每次單片機(jī)接通電源時,,都需要加入一定的延遲時間呢,?分析如下,。
1 上電復(fù)位時序
在單片機(jī)及其應(yīng)用電路每次上電的過程中,,由于電源同路中通常存在一些容量大小不等的濾波電容,使得單片機(jī)芯片在其電源引腳VCC和VSS之間所感受到的電源電壓值VDD,,是從低到高逐漸上升的,。該過程所持續(xù)的時間一般為1~100ms(記作 tsddrise)。上電延時taddrise的定義是電源電壓從lO%VDD上升到90%VDD所需的時間,,如圖1所示,。
在單片機(jī)電源電壓上升到適合內(nèi)部振蕩電路運(yùn)行的范圍并且穩(wěn)定下來之后,時鐘振蕩器開始了啟動過程(具體包括偏置,、起振,、鎖定和穩(wěn)定幾個過程)。該過程所持續(xù)的時間一般為1~50 ms(記作tOSC),。起振延時tOSC的定義是時鐘振蕩器輸出信號的高電平達(dá)到Vih1所需的時間,。從圖1所示的實際測量圖中也可以看得很清楚。這里的 Vih1是單片機(jī)電氣特性中的一個普通參數(shù),,代表XTALl和RST引腳上的輸入邏輯高電平,。例如,對于常見的單片機(jī)型號AT89C5l和 AT89S5l,,廠家給出的Vih1值為0.7VDD~VDD+0.5V。
從理論上講,,單片機(jī)每次上電復(fù)位所需的最短延時應(yīng)該不小于treset,。這里,treset等于上電延時taddrise與起振延時tOSC之和,,如圖1所示,。從實際上講,延遲一個treset往往還不夠,,不能夠保障單片機(jī)有--一個良好的工作開端,。
在單片機(jī)每次初始加電時,首先投入工作的功能部件是復(fù)位電路,。復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個延時(記作TRST),,以便給予電源電壓從上升到穩(wěn)定的一個等待時間,;在電源電壓穩(wěn)定之后,再插入一個延時,,給予時鐘振蕩器從起振到穩(wěn)定的一個等待時間,;在單片機(jī)開始進(jìn)入運(yùn)行狀態(tài)之前,還要至少推遲 2個機(jī)器周期的延時,,如圖2所示,。
2 上電復(fù)位電路3款
上述一系列的延時,都是利用在單片機(jī)RST引腳上外接一個RC支路的充電時間而形成的,。典型復(fù)位電路如圖3(a)所示,,其中的阻容值是原始手冊中提供的。在經(jīng)歷了一系列延時之后,,單片機(jī)才開始按照時鐘源的工作頻率,,進(jìn)入到正常的程序運(yùn)行狀態(tài)。從圖 2所示的實測曲線中可以同時看到4條曲線:VDD,、Vrst,、XTAL2和ALE。在電源電壓以及振蕩器輸出信號穩(wěn)定之后,,又等待了一段較長的延時才釋放 RST信號,,使得CPU脫離復(fù)位鎖定狀態(tài);而RST信號一旦被釋放,,立刻在ALE引腳上就可檢測到持續(xù)的脈沖信號,。
由于標(biāo)準(zhǔn)80C51的復(fù)位邏輯相對簡單,復(fù)位源只有RST一個(相對新型單片機(jī)來說,,復(fù)位源比較單一),,因此各種原因所導(dǎo)致的復(fù)位活動以及復(fù)位狀態(tài)的進(jìn)入,都要依靠在外接引腳RST上施加一定時間寬度的高電平信號來實現(xiàn),。
標(biāo)準(zhǔn)80C5l不僅復(fù)位源比較單一,,而且還沒有設(shè)計內(nèi)部上電復(fù)位的延時功能,因此必須借助于外接阻容支路來增加延時環(huán)節(jié),,如圖3(a)所示,。其實,外接電阻R還是可以省略的,,理由是一些CMOS單片機(jī)芯片內(nèi)部存在一個現(xiàn)成的下拉電阻Rrst,。例如,AT89系列的Rrst阻值約為50~200kΩ,; P89V51Rx2系列的Rrst阻值約為40~225 kΩ,,如圖4所示。因此,在圖3(a)基礎(chǔ)上,,上電復(fù)位延時電路還可以精簡為圖3(b)所示的簡化電路(其中電容C的容量也相應(yīng)減小了),。
在每次單片機(jī)斷電之后,須使延時電容C上的電荷立刻放掉,,以便為隨后可能在很短的時間內(nèi)再次加電作好準(zhǔn)備,。否則,在斷電后C還沒有充分放電的情況下,,如果很快又加電,,那么RC支路就失去了它應(yīng)有的延遲功能。因此,,在圖3(a)的基礎(chǔ)上添加一個放電二極管D,,上電復(fù)位延時電路就變成了如圖3(c)所示的改進(jìn)電路。也就是說,,只有RC支路的充電過程對電路是有用的,,放電過程不僅無用,而且會帶來潛在的危害,。于是附加一個放電二極管D來大力縮短放電持續(xù)時間,,以便消除隱患。二極管D只有在單片機(jī)斷電的瞬間(即VCC趨近于0V,,可以看作VCC對地短路)正向?qū)?,平時一直處于反偏截止?fàn)顟B(tài)。
80C51單片機(jī)的上電復(fù)位POR(Pmver On Reset)實質(zhì)上就是上電延時復(fù)位,,也就是在上電延時期間把單片機(jī)鎖定在復(fù)位狀態(tài)上,。為什么在每次單片機(jī)接通電源時,都需要加入一定的延遲時間呢,?分析如下,。
1 上電復(fù)位時序
在單片機(jī)及其應(yīng)用電路每次上電的過程中,由于電源同路中通常存在一些容量大小不等的濾波電容,,使得單片機(jī)芯片在其電源引腳VCC和VSS之間所感受到的電源電壓值VDD,,是從低到高逐漸上升的。該過程所持續(xù)的時間一般為1~100ms(記作 tsddrise),。上電延時taddrise的定義是電源電壓從lO%VDD上升到90%VDD所需的時間,,如圖1所示。
在單片機(jī)電源電壓上升到適合內(nèi)部振蕩電路運(yùn)行的范圍并且穩(wěn)定下來之后,,時鐘振蕩器開始了啟動過程(具體包括偏置、起振,、鎖定和穩(wěn)定幾個過程),。該過程所持續(xù)的時間一般為1~50 ms(記作tOSC)。起振延時tOSC的定義是時鐘振蕩器輸出信號的高電平達(dá)到Vih1所需的時間,。從圖1所示的實際測量圖中也可以看得很清楚,。這里的 Vih1是單片機(jī)電氣特性中的一個普通參數(shù),,代表XTALl和RST引腳上的輸入邏輯高電平。例如,,對于常見的單片機(jī)型號AT89C5l和 AT89S5l,,廠家給出的Vih1值為0.7VDD~VDD+0.5V。
從理論上講,,單片機(jī)每次上電復(fù)位所需的最短延時應(yīng)該不小于treset,。這里,treset等于上電延時taddrise與起振延時tOSC之和,,如圖1所示,。從實際上講,延遲一個treset往往還不夠,,不能夠保障單片機(jī)有--一個良好的工作開端,。
在單片機(jī)每次初始加電時,首先投入工作的功能部件是復(fù)位電路,。復(fù)位電路把單片機(jī)鎖定在復(fù)位狀態(tài)上并且維持一個延時(記作TRST),,以便給予電源電壓從上升到穩(wěn)定的一個等待時間;在電源電壓穩(wěn)定之后,,再插入一個延時,,給予時鐘振蕩器從起振到穩(wěn)定的一個等待時間;在單片機(jī)開始進(jìn)入運(yùn)行狀態(tài)之前,,還要至少推遲 2個機(jī)器周期的延時,,如圖2所示。
2 上電復(fù)位電路3款
上述一系列的延時,,都是利用在單片機(jī)RST引腳上外接一個RC支路的充電時間而形成的,。典型復(fù)位電路如圖3(a)所示,其中的阻容值是原始手冊中提供的,。在經(jīng)歷了一系列延時之后,,單片機(jī)才開始按照時鐘源的工作頻率,進(jìn)入到正常的程序運(yùn)行狀態(tài),。從圖 2所示的實測曲線中可以同時看到4條曲線:VDD,、Vrst、XTAL2和ALE,。在電源電壓以及振蕩器輸出信號穩(wěn)定之后,,又等待了一段較長的延時才釋放 RST信號,使得CPU脫離復(fù)位鎖定狀態(tài),;而RST信號一旦被釋放,,立刻在ALE引腳上就可檢測到持續(xù)的脈沖信號。
由于標(biāo)準(zhǔn)80C51的復(fù)位邏輯相對簡單,復(fù)位源只有RST一個(相對新型單片機(jī)來說,,復(fù)位源比較單一),,因此各種原因所導(dǎo)致的復(fù)位活動以及復(fù)位狀態(tài)的進(jìn)入,都要依靠在外接引腳RST上施加一定時間寬度的高電平信號來實現(xiàn),。
標(biāo)準(zhǔn)80C5l不僅復(fù)位源比較單一,,而且還沒有設(shè)計內(nèi)部上電復(fù)位的延時功能,因此必須借助于外接阻容支路來增加延時環(huán)節(jié),,如圖3(a)所示,。其實,外接電阻R還是可以省略的,,理由是一些CMOS單片機(jī)芯片內(nèi)部存在一個現(xiàn)成的下拉電阻Rrst,。例如,AT89系列的Rrst阻值約為50~200kΩ,; P89V51Rx2系列的Rrst阻值約為40~225 kΩ,,如圖4所示。因此,,在圖3(a)基礎(chǔ)上,,上電復(fù)位延時電路還可以精簡為圖3(b)所示的簡化電路(其中電容C的容量也相應(yīng)減小了)。
在每次單片機(jī)斷電之后,,須使延時電容C上的電荷立刻放掉,,以便為隨后可能在很短的時間內(nèi)再次加電作好準(zhǔn)備。否則,,在斷電后C還沒有充分放電的情況下,,如果很快又加電,那么RC支路就失去了它應(yīng)有的延遲功能,。因此,,在圖3(a)的基礎(chǔ)上添加一個放電二極管D,上電復(fù)位延時電路就變成了如圖3(c)所示的改進(jìn)電路,。也就是說,,只有RC支路的充電過程對電路是有用的,放電過程不僅無用,,而且會帶來潛在的危害,。于是附加一個放電二極管D來大力縮短放電持續(xù)時間,以便消除隱患,。二極管D只有在單片機(jī)斷電的瞬間(即VCC趨近于0V,,可以看作VCC對地短路)正向?qū)ǎ綍r一直處于反偏截止?fàn)顟B(tài),。
3 上電復(fù)位失敗的2種案例分析
假如上電復(fù)位延遲時間不夠或者根本沒有延時過程,,則單片機(jī)可能面臨以下2種危險,,從而導(dǎo)致CPU開始執(zhí)行程序時沒有一個良好的初始化,甚至陷入錯亂狀態(tài),。
①在時鐘振蕩器輸出的時鐘脈沖還沒有穩(wěn)定,,甚至還沒有起振之前,,就因釋放RST信號的鎖定狀態(tài)而放縱CPU開始執(zhí)行程序。這將會導(dǎo)致程序計數(shù)器PC中首次抓取的地址碼很可能是0000H之外的隨機(jī)值,,進(jìn)而引導(dǎo)CPU陷入混亂狀態(tài),。參考圖5所示的實測信號曲線。
?、谠陔娫措妷哼€沒有上升到合適范圍之前(自然也是時鐘尚未穩(wěn)定之前),,就釋放RST信號的鎖定狀態(tài),將會使單片機(jī)永遠(yuǎn)感受不到復(fù)位信號,、經(jīng)歷不到復(fù)位過程,、包含PC在內(nèi)的各個SFR內(nèi)容沒有被初始化而保留了隨機(jī)值,從而導(dǎo)致CPU從一個隨機(jī)地址開始執(zhí)行程序,,進(jìn)而也陷入混亂狀態(tài),。參考圖6所示的實測信號曲線。
4 外接監(jiān)控器MAX810x
為了提高單片機(jī)應(yīng)用系統(tǒng)的穩(wěn)定性,,以及保障單片機(jī)應(yīng)用系統(tǒng)的可靠復(fù)位,,許多世界著名的半導(dǎo)體公司,陸續(xù)推出了種類繁多,、功能各異,、封裝微小的專用集成電路。本文僅以帶有電源電壓跌落復(fù)位和上電延遲復(fù)位功能的3腳芯片MAX810x為例,,簡單說明,。
MAX810x(x=L、M,、J,、T、S或R)是美國Maxim公司研制的一組CMOS電源監(jiān)控電路,,能夠為低功耗微控制器MCU(或μC),、微處理器 MPU(或μP)或數(shù)字系統(tǒng)監(jiān)視3~5V的電源電壓。在電源上電,、斷電和跌落期間產(chǎn)生脈寬不低于140ms的復(fù)位脈沖,。與采用分立元件或通用芯片構(gòu)成的欠壓檢測電路相比,將電壓檢測和復(fù)位延時等功能集成到一片3引腳封裝的小芯片內(nèi),,大大降低了系統(tǒng)電路的復(fù)雜性,,減少了元器件的數(shù)量,,顯著提高了系統(tǒng)可靠性和精確度。應(yīng)用電路如圖7所示,。
MAX810x系列產(chǎn)品提供高電平復(fù)位信號,,并且還能提供6種固定的檢測門限(4.63V、4.38V,、4.OOV,、3.08V、2.93V和2.63V),。例如,,MAX810M的檢測門限電壓就是4.38V,回差電壓約為O.16V,。
對于MAX810,,在電源上電、斷電或跌落期間,,只要VCC還高于1.1V,,就能保證RESET引腳輸出高電壓。在VCC上升期問RESET維持高電平,,直到電源電壓升至復(fù)位門限以上,。在超過此門限后,內(nèi)部定時器大約再維持240 ms后釋放RESET,,使其返回低電平,。無論何時只要電源電壓降低到復(fù)位門限以下(即電源跌落),RESET引腳就會立刻變高,。
關(guān)于MAX8lO芯片的更多信息,,可以參考該器件的產(chǎn)品手冊。