日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 電源漫談

MCU通常會(huì)在工作之前,先經(jīng)歷復(fù)位和啟動(dòng)的一個(gè)過(guò)程,在用戶使用過(guò)程中往往在這個(gè)階段的工作不是那么的清楚,這里我們就這一話題進(jìn)行一個(gè)討論。


.MCU的復(fù)位問(wèn)題

1 16bit MCUdsPIC33復(fù)位源的種類


一般來(lái)說(shuō),16MCU包括dsPIC33的復(fù)位源主要包含以上7種,他們都可以對(duì)器件產(chǎn)生復(fù)位的作用,但是細(xì)節(jié)有所不同。

2 復(fù)位系統(tǒng)框圖


從復(fù)位系統(tǒng)框圖上看,BORPOR二者是和VDD電源有關(guān)的兩種,看門狗和外部復(fù)位引腳復(fù)位也是比較常見的復(fù)位類型。

3 復(fù)位寄存器RCON


復(fù)位寄存器RCON包含了復(fù)位相關(guān)的狀態(tài),當(dāng)發(fā)生復(fù)位時(shí)RCON這個(gè)寄存器就會(huì)更新,以便表征是哪一個(gè)復(fù)位源發(fā)生了復(fù)位。除此之外,這個(gè)寄存器也包含了WDT及低功耗的特性的狀態(tài)信息,所以用戶可以查看這個(gè)寄存器去判斷復(fù)位原因。

4 復(fù)位寄存器內(nèi)容1

5 復(fù)位寄存器的內(nèi)容2


從圖示注釋中,我們可以看到用戶在軟件中可以對(duì)這些RCON寄存器位置位1,但是這不會(huì)導(dǎo)致器件復(fù)位。


.復(fù)位和中斷的關(guān)系

6 默認(rèn)中斷的復(fù)位


XC16編譯器中,當(dāng)用戶沒(méi)有提供相應(yīng)中斷源的中斷服務(wù)程序時(shí),會(huì)在中斷向量位置放置一個(gè)軟件復(fù)位中斷指令SWR,這時(shí)如果有一個(gè)意外中斷發(fā)生時(shí),便觸發(fā)了軟件復(fù)位使得器件復(fù)位。

7 默認(rèn)中斷軟件復(fù)位指令說(shuō)明


規(guī)格書中也有說(shuō)明,任何未實(shí)施的或者未使用的中斷向量位置都會(huì)放一個(gè)默認(rèn)中斷處理程序,它包含一條RESET指令。


三.復(fù)位和時(shí)鐘的關(guān)系

當(dāng)器件復(fù)位時(shí),其時(shí)鐘狀態(tài)是什么?一般來(lái)說(shuō)它是由芯片配置位決定的。

8 配置位中的初始復(fù)位時(shí)鐘選擇


9 時(shí)鐘Clock Switch模式


當(dāng)器件支持Clock Switch模式時(shí),初始時(shí)鐘由OSCCON寄存器中的COSC決定,切換后的時(shí)鐘由NOSC決定。

9 雙速啟動(dòng)的模式


一般來(lái)說(shuō),從進(jìn)入復(fù)位到執(zhí)行第一條指令之間的時(shí)間,取決于所使用的振蕩器,當(dāng)使用PrimarySecondary振蕩器時(shí),由于需要和外部晶振同步,所以需要在RESET時(shí)等待時(shí)間較長(zhǎng)才能穩(wěn)定。如果使用內(nèi)部振蕩器的話,就非??炀涂梢苑€(wěn)定,基于配置位對(duì)時(shí)鐘的選擇,在復(fù)位時(shí)會(huì)等待一定的時(shí)間,最后在出復(fù)位狀態(tài)前達(dá)到時(shí)鐘穩(wěn)定。


雙速啟動(dòng)的含義就是說(shuō),采用FRC振蕩器快速啟動(dòng),然后當(dāng)Primary振蕩器達(dá)到穩(wěn)定后再切換為它,這樣可以避免等待外部晶振的同步時(shí)間。


四.復(fù)位和寄存器及變量狀態(tài)的關(guān)系

10 復(fù)位時(shí)的寄存器狀態(tài)


外設(shè)的特殊功能寄存器SFR一般存在RAM中,在復(fù)位時(shí)可能會(huì)被改變,在規(guī)格書中會(huì)規(guī)定各個(gè)寄存器SFR在復(fù)位時(shí)的值。當(dāng)這個(gè)值是u時(shí),就是說(shuō)它在復(fù)位時(shí)是不改變,x就是說(shuō)它在復(fù)位時(shí)的值是不確定的。當(dāng)然,有一些寄存器,在PORBOR時(shí)會(huì)有不同的值,這個(gè)需要注意一下。


值得注意的各種復(fù)位源中,只有POR會(huì)改變data Memory的內(nèi)容,而其它則不會(huì)改變。


五.程序啟動(dòng)代碼的執(zhí)行


一般來(lái)說(shuō),C編譯器會(huì)在執(zhí)行用戶指令前,調(diào)用一段啟動(dòng)代碼,這段啟動(dòng)代碼會(huì)在結(jié)束復(fù)位時(shí)執(zhí)行,這段啟動(dòng)代碼的目的就是為運(yùn)行用戶C程序而做的系統(tǒng)準(zhǔn)備。典型的啟動(dòng)代碼由編譯器去提供,他們將改變?cè)趶?fù)位后的memory內(nèi)容。


另外,在執(zhí)行啟動(dòng)代碼時(shí),XC16編譯器會(huì)提供一些前導(dǎo)選項(xiàng),比如Persistent,允許用戶在執(zhí)行啟動(dòng)代碼時(shí)不改變某些變量。也有一些編譯器會(huì)提供更直接的選項(xiàng),比如在啟動(dòng)代碼時(shí),不初始化變量,所以,需要注意編譯器的處理方式。

11 程序執(zhí)行過(guò)程


編譯器會(huì)把啟動(dòng)代碼放在0x200flash地址位置,用戶main程序會(huì)放在啟動(dòng)代碼后,在系統(tǒng)復(fù)位時(shí),程序PC會(huì)被芯片硬件強(qiáng)制為0,則程序從0x00開始執(zhí)行,在0x00處會(huì)有一個(gè)GOTO指令讓代碼執(zhí)行到0x200部分的啟動(dòng)代碼,這樣就可以跨過(guò)中斷向量的地址范圍。

12 程序執(zhí)行過(guò)程說(shuō)明


12中清楚的說(shuō)明了代碼的執(zhí)行過(guò)程,main函數(shù)執(zhí)行之前會(huì)有執(zhí)行Start-up代碼的過(guò)程。


.其它復(fù)位源的討論

13 Trap沖突復(fù)位說(shuō)明

當(dāng)系統(tǒng)同時(shí)發(fā)生hardTrapSoft Trap時(shí),則會(huì)發(fā)生Trap沖突復(fù)位,HardTrap主要是優(yōu)先級(jí)在Level13-15之間的地址錯(cuò)誤Trap或者振蕩器錯(cuò)誤Trap等。

14 Soft Trap的類別說(shuō)明


諸如DMAC錯(cuò)誤,或者數(shù)學(xué)錯(cuò)誤,或者堆棧錯(cuò)誤等之類的soft Trap發(fā)生時(shí),由于他們的優(yōu)先級(jí)會(huì)比Hard Trap更高,因此會(huì)觸發(fā)Trap沖突復(fù)位。

15 非法指令執(zhí)行復(fù)位


當(dāng)程序嘗試去執(zhí)行非法指令時(shí),則會(huì)觸發(fā)IOPUWR位標(biāo)志位置位,表示嘗試執(zhí)行非法指令。


比如,用戶在Flash中保存常數(shù)值,那么會(huì)僅僅用低16位的內(nèi)容去保存數(shù)據(jù),高8位設(shè)置為0x3F,這就是一個(gè)非法指令的示例,這樣就可以避免程序去執(zhí)行這個(gè)非法指令以避免去執(zhí)行保存的數(shù)據(jù)區(qū)域的指令。


另外,W寄存器在復(fù)位時(shí)會(huì)清零,直到它再一次寫進(jìn)去數(shù)據(jù),如果使用未進(jìn)行初始化的W寄存器作為地址指針,則會(huì)觸發(fā)IOPUWR位置位觸發(fā)復(fù)位。


總結(jié),本文對(duì)器件復(fù)位相關(guān)的源進(jìn)行討論,同時(shí)討論和復(fù)位相關(guān)的方面,如寄存器狀態(tài),時(shí)鐘狀態(tài),并對(duì)程序啟動(dòng)過(guò)程做一定介紹。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉