PIC單片機(jī)應(yīng)用設(shè)計(jì)經(jīng)驗(yàn)與技巧
美國(guó)微芯公司(Microch{p TECHNOLOGY Inc.)開發(fā)的CM0S工藝PIC系列8位單片機(jī)(RISC微控制器),特別是采用內(nèi)置第二代FLASH存儲(chǔ)器(40年存儲(chǔ)壽命)的微控制器在快速應(yīng)用方面具有獨(dú)到之處。由于其易用性和高可靠性,該系列微控制器穩(wěn)居8位單片機(jī)全球出貨量之首。PIC系列單片機(jī)具有指令集簡(jiǎn)潔、簡(jiǎn)單易學(xué)、速度高、功能強(qiáng)、功耗低、價(jià)格低廉、體積小巧、適用性好及抗干擾能力強(qiáng)等特點(diǎn),大量應(yīng)用于汽車電氣控制、電機(jī)控制、工業(yè)控制儀表和儀表、通信、家電、玩具、低功耗的測(cè)控應(yīng)用等領(lǐng)域,在國(guó)內(nèi)越來越受到廣大設(shè)計(jì)者的歡迎,微芯公司的單片機(jī)已經(jīng)成為目前單片機(jī)世界的主流產(chǎn)品。
PIC 8位單片機(jī)內(nèi)已經(jīng)包含運(yùn)算器、存儲(chǔ)器、A/D、PWM、輸入和輸出I/O(灌電流可達(dá)25mA)、通信等常用接口,自由靈活的定義功能可以適應(yīng)不同的控制要求。而不必增加額外的IC芯片。這樣電路結(jié)構(gòu)很簡(jiǎn)單,開發(fā)周期將大為縮短。
PICl6系列單片機(jī)屬于PIC8位單片機(jī)的中級(jí)型產(chǎn)品,采用14位的RISC指令系統(tǒng)。筆者使用PICl6F716單片機(jī)設(shè)計(jì)了一個(gè)電動(dòng)機(jī)保護(hù)器,在設(shè)計(jì)過程中遇到很多問題,通過多方查找資料以及向MICROCHIP公司技術(shù)人員尋求支持,問題一一得到解決?,F(xiàn)將部分問題記錄如下,與大家一起探討。
1 ICD2作為程序燒寫的使用
1.1 ICD2簡(jiǎn)介
MPLAB ICD2在線調(diào)試器是一款低價(jià)位的PIC開發(fā)工具。它利用FLASH工藝芯片的程序區(qū)自讀寫功能來實(shí)現(xiàn)仿真器調(diào)試功能;使用的軟件平臺(tái)是MICROCHIP的MPLAB IDE(集成開發(fā)環(huán)境軟件包),兼容Windows NT、Windows 2000和Windlows XP等操作系統(tǒng)。其通信接口方式可以是USB(最高可達(dá)2Mb/s)或RS-232串行接口方式;工作電壓范圍為2.O~5.5V,可支持最低2.0V的低壓調(diào)試。
MPLABICD2可以支持大部分FLASH工藝的芯片。它不僅可以用作調(diào)試器,同時(shí)還可以作為開發(fā)型的燒寫器使用。
1.2 ICD2作為燒寫器時(shí)的配置
燒寫芯片的方式有兩種:普通燒寫和在線燒寫。在線燒寫是適合大批量生產(chǎn)方式的燒寫辦法。使用在線燒寫時(shí)通常用戶都已經(jīng)把芯片焊到了板上,此時(shí)就要求用戶板上有預(yù)留的燒寫接口。用戶板上的接口是通過一條6芯的扁平電纜與ICD2主機(jī)上同樣的接口一一對(duì)應(yīng)連接的。圖1顯示了MPLAB ICD2與目標(biāo)板上模塊連接插座的互連狀況。
ICD連接插座有6個(gè)引腳,但只使用了其中的5個(gè)引腳,分別是VDD(電源)、VSS(地)、VPP(編程電壓)、PGC(同步時(shí)鐘)和PGD(數(shù)據(jù))。
1.3 ICD2作為燒寫器時(shí)容易出現(xiàn)的問題及解決方法
盡管MPLAG ICD2與目標(biāo)板的互連非常簡(jiǎn)單,但是一不小心就會(huì)出現(xiàn)問題,基本上每一個(gè)PIC的入門者都會(huì)碰到類似的問題。下面就一些常見問題作簡(jiǎn)要敘述。
如圖l所示,在VPP與VDD之間通常要串接一個(gè)上拉電阻(通常約為lOkΩ),這樣VPP線可置為低電平來手動(dòng)復(fù)位PICmicro單片機(jī)。但是對(duì)一般設(shè)計(jì)者來說,都是采用上電自動(dòng)復(fù)位。如果在這里采用集成器件DMP809,那么就會(huì)導(dǎo)致連接不上,程序沒有辦法燒入。
對(duì)于PGC、PGD兩根線,由于在ICD2內(nèi)部已經(jīng)進(jìn)行了上拉,所以在外圍設(shè)計(jì)中,不要冉進(jìn)行上拉,否則會(huì)造成分壓。對(duì)于PGC、PGD和VPP三根線,不要對(duì)地接電容.因?yàn)殡娙輹?huì)阻礙在數(shù)據(jù)和時(shí)鐘線上電平的快速轉(zhuǎn)換,從而影響ICD2與目標(biāo)板的連接。同樣對(duì)于PGC、PGD,由于數(shù)據(jù)或時(shí)鐘都是雙向傳輸?shù)?,這時(shí)如果在中間串一個(gè)二極管,則會(huì)影響ICD2與單片機(jī)的雙向通信。
但是,對(duì)PGC和PGD來說,在單片機(jī)上同時(shí)復(fù)用為普通I/O口,而有些使用上必須要接對(duì)地電容或者是串接二極管。對(duì)于這種情況,唯一的處理方式就是在燒寫時(shí)從芯片的PGC和PGD端口直接跳線到程序燒寫口。
2 A/D轉(zhuǎn)換通道切換問題
筆者所設(shè)計(jì)的電動(dòng)機(jī)保護(hù)器需要進(jìn)行很多A/D轉(zhuǎn)換,比如三相電流轉(zhuǎn)換、零序電流轉(zhuǎn)換以及各種*等。但是筆者所采用的PIC16F716單片機(jī)只有5路A/D轉(zhuǎn)換通道,因此附加了一個(gè)多位選擇開關(guān)對(duì)一個(gè)A/D通道進(jìn)行復(fù)用。而在調(diào)試中發(fā)現(xiàn)這樣一個(gè)問題,就是A/D轉(zhuǎn)換值不準(zhǔn)確,甚至有點(diǎn)亂,但從程序流程以及代碼角度均查不出任何問題。后查明PICl6F716單片機(jī)進(jìn)行A/D轉(zhuǎn)換通道切換時(shí),需要一定的延時(shí),延時(shí)時(shí)間是毫秒級(jí)。解決辦法是:在通道問切換時(shí),當(dāng)?shù)谝粋€(gè)通道轉(zhuǎn)換完成后,先轉(zhuǎn)到另一個(gè)通道;然后延時(shí)1ms左右,再進(jìn)行A/D轉(zhuǎn)換。而對(duì)同一個(gè)通道信號(hào)切換時(shí),要在第一個(gè)信號(hào)轉(zhuǎn)換完成后,禁止信號(hào)輸入,延時(shí)1ms左右;然后輸人信號(hào),再進(jìn)行A/D轉(zhuǎn)換。
這種做法比較麻煩,也很占用時(shí)間,并且從調(diào)試結(jié)果來看,問題并沒有解決。在反復(fù)進(jìn)行調(diào)試中,最后得到的優(yōu)化解決辦法是:對(duì)于通道間轉(zhuǎn)換以及同一通道信號(hào)轉(zhuǎn)換,要對(duì)每一個(gè)信號(hào)至少進(jìn)行兩次A/D轉(zhuǎn)換;第一次的轉(zhuǎn)換結(jié)果,舍棄不予處理,只取第二次A/D轉(zhuǎn)換的結(jié)果。從調(diào)試結(jié)果來看,很好地解決了這一問題。
電機(jī)保護(hù)器相關(guān)文章:電機(jī)保護(hù)器原理
評(píng)論