0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PIC單片機(jī)的在線調(diào)試說明

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-06 11:25 ? 次閱讀

在線調(diào)試器(ICD)是一種非常強(qiáng)大且有效的工具,可以在硬件級別對基于微控制器的系統(tǒng)進(jìn)行實(shí)時(shí)調(diào)試,它允許您在目標(biāo)微控制器運(yùn)行,停止和單步執(zhí)行程序被嵌入到實(shí)際電路中。暫停后,可以實(shí)時(shí)檢查和修改程序變量,特殊功能寄存器(SFR),RAM和EEPROM的位置,從而幫助設(shè)計(jì)人員一起調(diào)試固件和硬件。在本文中,我將描述PIC單片機(jī)中的在線調(diào)試技術(shù),并通過使用PIC16F887單片機(jī)的測試項(xiàng)目演示調(diào)試過程。盡管大多數(shù)ICD的操作是相似的,但在這里我將結(jié)合使用mikroICD器件的mikroElektronika的PICFlash以及用于PIC編譯器的mikroC Pro進(jìn)行說明。

PIC單片機(jī)的在線調(diào)試說明

ICD在調(diào)試PIC編程

理論

ICD是硬件連接在PC和目標(biāo)微控制器之間的設(shè)備,可以快速,輕松地調(diào)試實(shí)時(shí)應(yīng)用程序。 ICD由PC上運(yùn)行的調(diào)試應(yīng)用程序工具控制。調(diào)試工具允許設(shè)計(jì)人員通過將斷點(diǎn)插入到程序0r中來單步執(zhí)行程序,從而減慢微控制器的運(yùn)行速度。在執(zhí)行了一條指令或一組指令之后,可以檢查程序變量和內(nèi)部寄存器的值,并在需要時(shí)進(jìn)行修改。這有助于快速識別源代碼中的錯(cuò)誤和錯(cuò)誤,從而加快項(xiàng)目的開發(fā)過程。

PICMicro中的ICD

在PIC單片機(jī)中,可通過與在線串行編程(ICSP)相同的引腳(即ICSPDAT(或PGD),ICSPCLK(或PGC),V PP)來實(shí)現(xiàn)在線調(diào)試。 sub》/MCLR(編程模式電壓),V DD (電源電壓)和V SS (地)。這使制造商可以將ISCP編程和在線調(diào)試功能集成到單個(gè)設(shè)備中。在調(diào)試過程中,ICD設(shè)備會向目標(biāo)微控制器的程序存儲器中添加額外的代碼塊(以及用戶應(yīng)用程序),該代碼塊與調(diào)試應(yīng)用程序進(jìn)行交互。并通過同一條編程電纜將變量值,內(nèi)部寄存器值和其他詳細(xì)信息發(fā)送到PC。

例如,MicrochipMPLAB ICD2和ICD3既是選定PIC MCUdsPIC DSC的編程器又是實(shí)時(shí)調(diào)試器。 ICD的功能由PC上運(yùn)行的MPLAB集成開發(fā)環(huán)境(IDE)應(yīng)用軟件控制。在調(diào)試期間,可通過MPLAB IDE界面以交互方式訪問目標(biāo)微控制器的所有可用功能。這些功能使您能夠以單步模式運(yùn)行程序,將斷點(diǎn)插入程序,檢查寄存器和變量,并根據(jù)需要修改它們。

盡管ICD是一種非常有價(jià)值的調(diào)試工具,但它并不是不惜一切代價(jià)。 ICD的兩個(gè)主要缺點(diǎn)是:1)它使用目標(biāo)微控制器的一些內(nèi)存,并且2)它占用目標(biāo)微控制器的一些I/O引腳以與PC通信。因此,在調(diào)試時(shí),目標(biāo)微控制器的PGD,PGC和MCLR引腳不能用于任何其他目的。

帶有mikroICD的PICFlash

帶有mikroICD的PICFlash是用于PIC12,PIC16和PIC18系列微控制器的編程器和在線調(diào)試器。它由mikroElektronika制造,并受其所有PIC編譯器(mikroC,mikroBasic和mikroPascal)支持。設(shè)備通過USB接口與PC通信,該接口還為ICD提供必要的電源。它通過PGC,PGD,V PP /MCLR和電源引腳連接到目標(biāo)PIC微控制器。當(dāng)該器件用作獨(dú)立編程器時(shí),在將HEX文件加載到目標(biāo)PIC微控制器之后,釋放前三個(gè)引腳。但是,如果將其用于在線調(diào)試,則這三個(gè)引腳用于與PC進(jìn)行通信,因此不能用于任何其他目的。

帶有mikroICD的PICFlash :程序員+在線調(diào)試器

使用mikroICD安裝PICFlash的軟件

您可以找到詳細(xì)信息有關(guān)此信息,請參見mikroICD手冊。設(shè)置該器件的最簡單方法是首先下載PIC編譯器。請注意,此設(shè)備無法與任何其他方的編譯器一起使用,因此您需要使用mikroElektronika編譯器之一才能使其正常工作。以下步驟介紹了用于mikroC Pro for PIC編譯器的帶有mikroICD的PICFlash的軟件安裝和設(shè)置。

首先,從HERE下載適用于PIC編譯器的mikroC Pro并將其安裝在PC上。/span》

安裝完成后,它將詢問您是否要安裝mikroProg Suite for PIC。同意,然后安裝。

下一步,它將詢問您是否要安裝驅(qū)動程序formikroProgprogrammer。說是,然后選擇適合您的操作系統(tǒng)的驅(qū)動程序文件,然后安裝它。您完成了!

使用帶有mikroICD的PICFlash進(jìn)行調(diào)試

第一步使用mikroICD正在用所選的編譯器編寫應(yīng)用程序,例如mikroC Pro for PIC。編譯器的IDE提供了調(diào)試功能,例如逐步運(yùn)行程序,使用斷點(diǎn)暫停程序執(zhí)行,檢查內(nèi)部寄存器的狀態(tài),跟蹤程序中變量的值等。請閱讀mikroICD手冊以獲取更多詳細(xì)信息。我將在我們的測試項(xiàng)目中說明調(diào)試過程,該項(xiàng)目使用PIC16F887微控制器和LM34DZ傳感器測量環(huán)境溫度并將其顯示在LCD上。該項(xiàng)目的電路圖如下所示,這是不言自明的。每次讀取溫度時(shí),它的工作方式都是如此。按下開關(guān),微控制器從LM34DZ讀取溫度樣本并將其顯示在LCD上。您可以看到,在默認(rèn)情況下,開關(guān)輸出為高,按下開關(guān)時(shí)輸出為低。我正在為此實(shí)驗(yàn)設(shè)置使用mikroElektronika的PIC Ready 1板。它是用于28和40引腳PIC微控制器的快速原型板。該開發(fā)板配有PIC16F887微控制器,預(yù)裝了串行引導(dǎo)加載程序,但實(shí)際上不適用于我們的情況。但是,該開發(fā)板也確實(shí)包含帶有mikroICD的PICFlash連接器。 PIC Ready 1板上的用戶手冊描述了有關(guān)板上連接的更多信息。

用于調(diào)試PIC16F887單片機(jī)系統(tǒng)的電路圖

實(shí)驗(yàn)設(shè)置:帶有mikroICD的PIC-Ready1板和PICFlash

所以讓我再次簡要描述整個(gè)場景,以便更清楚地了解我們正在嘗試在這里做。我們有一個(gè)PIC16F887微控制器電路,該電路可以讀取LM34DZ傳感器的模擬輸出,將其轉(zhuǎn)換為溫度(°F),并在LCD上顯示。該微控制器通過ICSP引腳連接到mikroICD(PIC編程器+ ICD)。 mikroICD也通過USB端口連接到PC。 mikroICD調(diào)試工具已嵌入PIC編譯器的mikroC Pro中,因此可以從那里進(jìn)行操作。我們將使用調(diào)試工具對加載到微控制器中的程序進(jìn)行單步調(diào)試,并觀察變量值。同時(shí),隨著每條指令的執(zhí)行,其效果也可以在真實(shí)的硬件電路中觀察到。

mikroICD調(diào)試過程

首先,使用以下源代碼創(chuàng)建一個(gè)新項(xiàng)目,以讀取LM34DZ輸出并在LCD屏幕上顯示測得的溫度。如果您是首次使用mikroC編譯器,請閱讀在mikroC Pro for PIC中創(chuàng)建第一個(gè)項(xiàng)目,以了解如何在mikroC Pro for PIC中創(chuàng)建新項(xiàng)目。編譯之前,請轉(zhuǎn)到“編輯項(xiàng)目”窗口,然后將生成類型選擇為ICD Debug。該選項(xiàng)將使mikroICD將調(diào)試代碼與用戶應(yīng)用程序一起加載到微控制器中。

/*

* Project name:

Testing mikroICD debugging tool with PIC16F887

* Copyright:

(c) Rajendra Bhatt

* Test configuration:

MCU: PIC16F887

Oscillator: HS, 10.0000 MHz

*/

// LCD module connections

sbit LCD_RS at RC3_bit;

sbit LCD_EN at RC2_bit;

sbit LCD_D4 at RC4_bit;

sbit LCD_D5 at RC5_bit;

sbit LCD_D6 at RC6_bit;

sbit LCD_D7 at RC7_bit;

sbit LCD_RS_Direction at TRISC3_bit;

sbit LCD_EN_Direction at TRISC2_bit;

sbit LCD_D4_Direction at TRISC4_bit;

sbit LCD_D5_Direction at TRISC5_bit;

sbit LCD_D6_Direction at TRISC6_bit;

sbit LCD_D7_Direction at TRISC7_bit;

// End LCD module connections

char txt[] = “Temp = F”;

char *temp = “000.0”;

sbit PressSwitch at RC0_bit;

unsigned int ADC_Value;

void main() {

ANSEL = 0x01; // Configure RA0 as Analog input

ANSELH = 0x00;

TRISA = 0xff;

C1ON_bit = 0; // Disable comparators

C2ON_bit = 0;

TRISC = 0x01; // RC0 is input

TRISD = 0x00;

TRISB = 0xFF;

txt[11] = 223; // ASCII value for degree symbol

Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // Clear display

Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off

Lcd_Out(1,1,txt); // Write text in first row

do {

if (!PressSwitch) { // Detect logical 0

Delay_ms(300);

ADC_Value = ADC_Read(0);

ADC_Value = ADC_Value*4.88; // Convert to temperature in F

temp[0] = adc_value/1000 + 48;

temp[1] = (adc_value/100)%10 + 48;

temp[2] = (adc_value/10)%10 + 48;

temp[4] = adc_value%10 + 48;

Lcd_Out(1,7,temp);

}

} while(1); // Endless loop

}

下載mikroC項(xiàng)目文件

為構(gòu)建類型選擇ICD調(diào)試可進(jìn)行在線調(diào)試

您保存此方案,然后單擊 Build + Program (或按F4鍵)來編譯編程并將其加載到目標(biāo)微控制器中。 mikroICD必須連接到PC的USB端口以及目標(biāo)微控制器。它會自動啟動 PIC的mikroProg Suite ,這是PC上將HEX文件傳輸?shù)絤icrcontroller中所需的應(yīng)用程序軟件。現(xiàn)在已經(jīng)加載了應(yīng)用程序和調(diào)試代碼,是時(shí)候使用調(diào)試功能了,看看它如何工作。

要開始調(diào)試,請從菜單中選擇 Start Debugger 選項(xiàng)。 運(yùn)行下拉菜單或使用功能鍵[F9]。現(xiàn)在,您可以通過按[F8]鍵逐行執(zhí)行程序。在執(zhí)行過程中,默認(rèn)情況下將以藍(lán)色突出顯示下一步執(zhí)行的程序行(請參見下圖)。

要執(zhí)行的下一條指令將以藍(lán)色突出顯示

可以在監(jiān)視窗口上監(jiān)視程序的實(shí)時(shí)執(zhí)行。您可以選擇要監(jiān)視的任何寄存器和變量,并將它們添加到監(jiān)視窗口。轉(zhuǎn)到查看-》調(diào)試Windows-》監(jiān)視窗口選項(xiàng)以獲取“監(jiān)視”窗口。從變量列表中選擇要觀察的變量,然后通過單擊顯示的+號將它們添加到窗口中。在下圖中,我正在調(diào)試期間監(jiān)視四個(gè)變量。它們是 ADC_Value,PressSwitch,ADRESH 和 ADRESL 。 ADC_Value 是用戶定義的整數(shù)變量,用于存儲10位A/D結(jié)果。 PressSwitch 是輸入端口RC0,因?yàn)檩p觸開關(guān)處于打開狀態(tài),所以它為高。 ADRESH 和 ADRESL 是8位內(nèi)部寄存器,用于存儲10位A/D轉(zhuǎn)換結(jié)果。最低有效8位存儲在 ADRESL 中,其余2個(gè)最高有效位存儲在 ADRESH 中。

將寄存器和變量添加到監(jiān)視窗口

正如我之前提到的,在在線調(diào)試中,只要執(zhí)行一條指令,在實(shí)際的硬件電路中也會觀察到其效果。例如,當(dāng)執(zhí)行 LCD_Init()例程時(shí),LCD屏幕上會出現(xiàn)一個(gè)閃爍的光標(biāo)。這表明您 LCD_Init()例程和您的LCD硬件接口都正常工作。

當(dāng)LCD_Init例程處于運(yùn)行狀態(tài)時(shí),會出現(xiàn)一個(gè)閃爍的光標(biāo)。執(zhí)行

按住[F8]鍵,直到執(zhí)行 Lcd_Out(1,1,txt),您將看到顯示的“ txt”字符串在液晶顯示屏上。繼續(xù)按下[F8]功能鍵,單步執(zhí)行將繼續(xù)直到達(dá)到 if(!PressSwitch)條件。默認(rèn)情況下,讀取溫度開關(guān)處于打開狀態(tài),而 PressSwitch 為“ 1”,因此不滿足 If條件。因此,如果再次按下[F8]鍵,執(zhí)行將跳至 while(1)語句。它將繼續(xù)在 if 和 while 語句之間來回移動,直到您按下電路板上的Read Temp開關(guān)。

等待直到按下Read Temp鍵

當(dāng) if(!PressSwitch)指令以藍(lán)色突出顯示時(shí),按 Read Temp 切換并點(diǎn)擊[F8],執(zhí)行將進(jìn)入if語句內(nèi)。按[F8]鍵將再次執(zhí)行單步執(zhí)行。當(dāng)執(zhí)行 ADC_Read(0)時(shí), ADC_Value , ADRESH 和 ADRESL 的值也會改變。 監(jiān)視窗口。

在if語句中的執(zhí)行從按下“讀取溫度”按鈕(PressSwitch = 0)開始執(zhí)行

監(jiān)視窗口中的ADC_Value顯示ADC結(jié)果

接下來,顯示 ADC_Value 和 temp Lcd_Out(1、7,temp)時(shí),將更新em》變量并在LCD上以°F為單位顯示溫度。

運(yùn)行到光標(biāo) [F4]和 breakpoint 功能,以加快調(diào)試過程。使用[F4]功能鍵,可以讓程序執(zhí)行直到到達(dá)光標(biāo)位置。類似地,使用斷點(diǎn)允許將故意停止放置在所需的程序行上。下表顯示了mikroICD中各種調(diào)試功能鍵的摘要。此外,在調(diào)試過程中,您還可以從監(jiān)視窗口修改程序變量的值。 用戶手冊中描述了mikroICD調(diào)試工具的更高級功能。

mikroICD調(diào)試工具中的主要功能鍵
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6027

    文章

    44459

    瀏覽量

    631255
  • PICMicro
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    12385
收藏 人收藏

    評論

    相關(guān)推薦

    PICmicro?中檔單片機(jī)系列參考手冊

    PIC單片機(jī)中文資料
    發(fā)表于 10-09 10:44 ?1次下載

    PIC單片機(jī)的優(yōu)勢和不足之處

    PIC單片機(jī)系列,作為美國微芯公司的杰出產(chǎn)品,憑借其卓越的性能和廣泛的應(yīng)用領(lǐng)域,在單片機(jī)市場上占據(jù)了舉足輕重的地位。該系列分為基本級、中級和高級三個(gè)級別,旨在滿足不同層次的應(yīng)用需求。 PIC
    的頭像 發(fā)表于 09-25 17:22 ?253次閱讀

    單片機(jī)基本io功能調(diào)試過程

    單片機(jī)基本IO功能的調(diào)試過程涉及多個(gè)步驟,旨在確保IO口能夠正確地執(zhí)行輸入和輸出操作。以下是一個(gè)調(diào)試過程,涵蓋了從準(zhǔn)備階段到實(shí)際測試的關(guān)鍵步驟: 一、準(zhǔn)備階段 確定單片機(jī)型號和IO口
    的頭像 發(fā)表于 09-14 14:38 ?338次閱讀

    幾種常用單片機(jī)在線升級能力比較

    電子發(fā)燒友網(wǎng)站提供《幾種常用單片機(jī)在線升級能力比較.pdf》資料免費(fèi)下載
    發(fā)表于 03-24 09:39 ?2次下載

    應(yīng)用單片機(jī)開發(fā)的ST LINK調(diào)試器設(shè)計(jì)制作

    調(diào)試ST單片機(jī)的過程中,ST-LINK是一個(gè)很好使用的調(diào)試工具。今天,我們就根據(jù)網(wǎng)絡(luò)上的設(shè)計(jì)方案進(jìn)行簡化,設(shè)計(jì)制作一個(gè)ST LINK調(diào)試器,用于之后的
    發(fā)表于 03-06 10:26 ?911次閱讀
    應(yīng)用<b class='flag-5'>單片機(jī)</b>開發(fā)的ST LINK<b class='flag-5'>調(diào)試</b>器設(shè)計(jì)制作

    PIC單片機(jī)振蕩電路中如何選擇晶體?

    PIC單片機(jī)振蕩電路中如何選擇晶體? 在PIC單片機(jī)振蕩電路中選擇晶體是一個(gè)重要的步驟,它直接影響到系統(tǒng)的穩(wěn)定性和性能。本文將詳細(xì)介紹如何選擇適合的晶體以確保
    的頭像 發(fā)表于 01-31 09:28 ?534次閱讀

    STM32單片機(jī)實(shí)現(xiàn)固件在線升級(IAP)

    、I2C、SPI等等)的FLASH引導(dǎo)程序,配合廠家提供的燒錄軟件工具或自行開發(fā)的軟件實(shí)現(xiàn)程序燒錄。3、IAP:是指單片機(jī)程序開發(fā)好之后在運(yùn)行過程中由外部用戶發(fā)起的在線
    的頭像 發(fā)表于 12-16 08:00 ?4476次閱讀
    STM32<b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)固件<b class='flag-5'>在線</b>升級(IAP)

    pic單片機(jī)匯編程序?qū)嵗?/a>

    以下是一個(gè)簡單的PIC單片機(jī)匯編程序示例,這個(gè)程序?qū)?shí)現(xiàn)一個(gè)LED閃爍的功能。 首先,我們需要了解PIC單片機(jī)的結(jié)構(gòu)和指令集。PIC
    的頭像 發(fā)表于 12-14 11:01 ?1624次閱讀

    STM32單片機(jī)一般有幾種調(diào)試方式

    JTAG調(diào)試*:這是一種常用的調(diào)試工具,可以用于單步執(zhí)行、斷點(diǎn)調(diào)試等操作。在STM32單片機(jī)中,可以使用ST-Link、STMicroelectronics IDE等工具進(jìn)行JTAG
    的頭像 發(fā)表于 12-13 10:31 ?2838次閱讀

    單片機(jī)程序調(diào)試常見問題 STM32單片機(jī)一般有幾種調(diào)試方式

    SWD是STM32單片機(jī)常用的調(diào)試模式之一。它通過單一的調(diào)試引腳(SWDIO)和時(shí)鐘引腳(SWCLK)來進(jìn)行調(diào)試和編程操作。使用SWD調(diào)試
    的頭像 發(fā)表于 12-02 17:14 ?3257次閱讀

    基于PIC單片機(jī)的測井系統(tǒng)激勵(lì)信號源研制

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的測井系統(tǒng)激勵(lì)信號源研制.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:58 ?0次下載
    基于<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的測井系統(tǒng)激勵(lì)信號源研制

    基于PIC單片機(jī)的AES算法優(yōu)化設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的AES算法優(yōu)化設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:46 ?0次下載
    基于<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的AES算法優(yōu)化設(shè)計(jì)

    基于PIC單片機(jī)的便攜式氣體測漏儀

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的便攜式氣體測漏儀.pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:45 ?0次下載
    基于<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的便攜式氣體測漏儀

    基于PIC單片機(jī)的多選擇性漏電保護(hù)

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的多選擇性漏電保護(hù).pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:44 ?0次下載
    基于<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的多選擇性漏電保護(hù)

    基于PIC單片機(jī)的起爆控制系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的起爆控制系統(tǒng).pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:39 ?0次下載
    基于<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的起爆控制系統(tǒng)