首頁 > 評測 > 簡約而不簡單的好奇心——Microchip Curiosity開發(fā)板評測

簡約而不簡單的好奇心——Microchip Curiosity開發(fā)板評測

Microchip   Curiosity   PIC   DIP   
  • 作者:邵子楊
  • 來源:21ic
  • [導讀]
  • 現(xiàn)在不少人都認為,8位和16位MCU即將消亡,32位MCU性價比和功耗方面更具有優(yōu)勢。然而Mcicrochip并沒有放棄和削減8位PIC的市場,相反地,在去年年中,Microchip推出了一款全新的Curiosity開發(fā)板。

使用MCC進行程序開發(fā)

前面介紹了在MPLAB X IDE中可以使用MCC(MPLAB Code ConConfigurator)進行軟件快速開發(fā),下面我們就重點來試試這個功能,并用MCC快速實現(xiàn)一個呼吸燈程序。

要使用MCC(MPLAB Code ConConfigurator),首先需要安裝這個它。MCC不是一個獨立的軟件,它是做為MPLAB X IDE的插件使用的。在安裝MPLAB X IDE時,是沒有附帶這個插件的,它需要我們自己安裝它。

安裝時,先從MPLAB X IDE的Tool菜單下,找到Plugins(插件)子菜單,進去后選擇Available Plugins(可用插件),就可以看到MPLAB Code Configurator了。選中它前面的選擇框,然后點擊左下角的Install,就可以自動下載并安裝MCC了。

11.jpg

安裝后,需要重新啟動一次MPLAB X IDE,才能正常使用MCC。在Tools菜單下的Embedded菜單下,我們就能夠看到MPLAB Code Configurator。

12.jpg

下面我們就用MCC創(chuàng)建一個呼吸燈程序(LED逐漸變亮,在逐漸變暗),體驗一下MCC的強大功能。首先需要創(chuàng)建一個MPLAB X IDE項目,創(chuàng)建過程和其他項目沒有什么區(qū)別。

13.jpg

只是在仿真器這里,我們需要選擇Curiosity開發(fā)板帶有的Starter Kits(PR08)。

14.jpg 

創(chuàng)建后,先從Tools菜單下運行MCC(MPLAB Code Configurator)。進入MCC后,我們首先就要選擇需要用到的硬件模塊(Modules)。它在MPLAB X IDE軟件的左邊中間位置,鼠標雙擊就可以將需要使用的模塊加入到項目。

15.jpg

為了實現(xiàn)呼吸燈功能,我們需要使用到PWM功能,改變PWM的占空比來調整LED的亮度。PIC16F1619有兩個PWM模塊:PWM3和PWM4,我們先添加PWM3模塊到項目中(如果添加PWM4就可以實現(xiàn)兩個呼吸燈)。

16.jpg

添加PWM3時,會自動添加TMR2模塊,因為PWM功能需要使用到定時器,PIC16F1619有六個定時器,但是只有TMR2/TMR4/TMR6支持PWM功能,默認是TMR2,也可以改用其他兩個定時器。

然后是分配PWM3使用的單片機GPIO。在MPLAB X IDE軟件的右上角,我們可以看到引腳管理功能。每個單片機功能模塊是一行,而每個GPIO是一列。如果一個GPIO支持某個單片機的功能,就會在對應的交叉位置顯示一個鎖的圖標,沒有上鎖代表引腳可以分配,鎖住就代表已經(jīng)分配了。

17.jpg

Curiosity開發(fā)板的原理圖上,我們可以看到LED使用了RA1、RA2、RA5、RC5這4個引腳。在引腳管理功能中,可以看到PWM3支持這幾個GPIO,我們先選擇RA1,用鼠標點擊PWM3和RA1交叉對應的分配引腳后,就變?yōu)橄聢D所示,這就代表將RA1分配給了PWM3。

18.jpg

在MPLAB X IDE軟件的中間,按下Grenrate Code按鈕,自動產(chǎn)生代碼。因為前面我們還沒有創(chuàng)建主程序,所以MCC還會提示是否需要創(chuàng)建main.c。

19.jpg

使用了PWM3,所以MCC會自動創(chuàng)建PWM3.c和PWM3.h文件。PWM3.h中包含了PWM3模塊相關的接口函數(shù),我們可以看到有兩個:

 void PWM3_Initialize(void);

 void PWM3_LoadDutyValue(uint16_t dutyValue);

一個是PWM3初始化,它會在MCC初始化函數(shù)中自動調用。另外一個函數(shù)是PWM3_LoadDutyValue,它就是用來控制PWM3占空比的。

20.jpg

然后在main.c的主程序中,添加下面的代碼,實現(xiàn)呼吸燈的功能。

while (1) {

// Add your application code

duty = 0;

while(duty <= ( 1024-16))

{

__delay_ms(20);

duty += 16;

PWM3_LoadDutyValue(duty);

}

duty = 1024;

while(duty >= 16)

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉載!

網(wǎng)友評論