2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PICマイコンを始めよう

Last updated at Posted at 2020-10-01

導入からLEDの点灯、点滅まで

本記事は、Maicrochip社のMPLAB® X Integrated Development Environment (IDE)、MPLAB® XC Compilersの導入、プラグインであるMPLAB® Code Configuratorの導入と使用方法についてまとめ、LEDの点滅までを目標とし、記事にした。

PIC開発環境を整える

開発に必要なもの

  • 今回のPIC開発に必要なもの
  • PC
  • PICマイコン(今回、pic16f18857を使用)
  • pickit3またはpickit4
  • 5V電源
  • LED
  • 抵抗器
  • ブレッドボード
  • ブレッドボード用配線

DSC_0119.JPG

MPLAB Xのインストール

下記のwebサイトより、microchip社開発環境であるMPLAB X IDEをダウンロードできる。

サイトの下のほうに以下の「Downloads」から実行ファイルをダウンロードする。
202009292101.PNG

ダウンロードしたら、実行する。
202009292107.PNG

規約を読み、承諾する。
202009292108.png

インストール場所を指定し、プロキシ設定を適宜変更する。
202009292109.png

そのまま、「Next」を行う。
202009292110.png

全て終了したら、開発環境の導入が完了する。ただし、コンパイラは別途導入する必要があるため、次章で導入する。
202009292111.png

コンパイラのインストール

下記のwebサイトより、microchip社開発環境で実行できるコンパイラXC8をダウンロードできる

202009292102.PNG

ダウンロード完了したら、実行する。
202009292112.png

規約を読み、実行する。
202009292113.png

ライセンスタイプは無償を選択する。
202009292114.png

インストールする場所を選択する。
202009292115.png

コンパイラの設定をする。今回、環境パスに追加している。
202009292116.png

「Next」を押し、コンパイラの導入を行う。
202009292117.png

実行完了したら、コンパイラの導入が完了する。
202009292118.png

MCC(MPLAB Code Configurator)の導入

MCC(MPLAB Code Configurator)とは、PICを起動した際の初期化をGUIを使ってMPLAB内で簡単に定義、ファイルの生成を行ってくれるツールである。 PICを動作するための最低限の設定やファイル生成を行い、PICの種類によってどのような機能が搭載されているかをグラフィカルにわかるため、簡単にPICの開発に取り組める。
MPLAB X IDE を実行する。
Tools -> Pluginsを開く。

202009292120.png

「Available Plugins」のタブを選択し、MPLAB Code ConfiguratorのチェックボックスをONにする。
そして、株の「instal」を実行する。
202009292121.png

Plugin Installerが実行される。
202009292122.png

インストールが完了し、MPLAB X IDE再起動を行うと導入が完了する。
20200929213.png

ハードウェアの作成

下図のように配線する.

202010142158.png

プログラム作成

プロジェクトの作成から、メインプログラム作成までを行う。

プロジェクトの作成

File -> New Projectを選択し、「New Project」ウィンドウを立ち上げる。
202009292123.png

「standalone Project」を選択し、「Next」を押す。
202009292124.png

デバイスの選択を行う。
202009292125.png

ツールの選択をする。
202009292126.png

先ほどインストールした、コンパイラの選択を行う。
202009292127.png

プロジェクトネームと場所を決め、「Finish」を選択し完了。
202009292128.png

MCCによるファイルの生成

MCCのプラグインがインストールしてあると、ツールバーに「MCC」と書かれたボタンが現れる。
MCCボタンをクリックする。(プロジェクトで初めてMCCを起動すると、mccファイルの保存を訊かれるため、保存をする。)
202009292129.png

下のような画面となる。

202009292130.png

クロック速度とオシレータの選択を行う。
今回のマイコン(16F18857)は、内蔵オシレータを搭載しており、32MHzで動作させることができる。

202009292131.png

画面下部の「Pin Module」の「GPIO」をoutputと設定する。
次に、画面中央の「Pin Module」というタブを開き、「Custom Name」を変更し名前を付ける。

202009292132.png

そして、「Available Resource」を選択し、「TMR1」を追加する。(+ボタンを選択する。)

202009292133.png

画面左部の「tree view」に、TMR1が追加され、クリックすると画面中央部の設定画面が表示される。
「clock source」と「timer period」、「Enable Timer Interrupt」を画面のように設定する。
最後に、画面左部の「Generate」を押すと、ファイルが生成される。

202009292134.png

mainプログラムの変更


/**
  Generated Main Source File

  Company:
    Microchip Technology Inc.

  File Name:
    main.c

  Summary:
    This is the main file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs

  Description:
    This header file provides implementations for driver APIs for all modules selected in the GUI.
    Generation Information :
        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.6
        Device            :  PIC16LF18857
        Driver Version    :  2.00
*/

/*
    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
    
    Subject to your compliance with these terms, you may use Microchip software and any 
    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
    license terms applicable to your use of third party software (including open source software) that 
    may accompany Microchip software.
    
    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
    FOR A PARTICULAR PURPOSE.
    
    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
    SOFTWARE.
*/

#include "mcc_generated_files/mcc.h"

void TMR1_interrupt(void);    //変更箇所

/*
                         Main application
 */
void main(void)
{
    // initialize the device
    SYSTEM_Initialize();

    // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
    // Use the following macros to:

    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();    //変更箇所

    // Enable the Peripheral Interrupts
    INTERRUPT_PeripheralInterruptEnable();    //変更箇所

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();

    TMR1_SetInterruptHandler(TMR1_interrupt);    //変更箇所
    
    
    while (1)
    {
        // Add your application code
    }
}

void TMR1_interrupt(void){    //変更箇所
                              //変更箇所
    LED_01_Toggle();          //変更箇所
                              //変更箇所
}                             //変更箇所

/**
 End of File
*/

プロパティ変更

プロジェクトを右クリックしてプロパティを開く.

202010142204.png

Powerをクリックする.

202010142205.png

PowerをPicKitから胸腔するため,チェックボックスをオンにする.

202010142206.png

書き込み

写真のように配線し,書き込みを行う.

202010142158.png

202010142207.png

動作

20200930_224223.gif

プログラムについて

プログラムについてザックリとした解説を行います。

main文

main文内では、MCCにより自動生成された関数SYSTEM_Initialize()による初期化、ハンドラーの設定、割り込み処理の許可を行っています。
INTERRUPT_GlobalInterruptEnable()INTERRUPT_PeripheralInterruptEnable()は、自動生成時にコメントアウトされているので注意。
つぎに、Timer1のカウントスタートTMR1_StartTimer()を行っています。
そして、メインループです。
メインループでは何もしません。

/*
                         Main application
 */
void main(void) {
    // initialize the device
    SYSTEM_Initialize();

    // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
    // Use the following macros to:

    TMR1_SetInterruptHandler(timer1_Interrupt);
    TMR3_SetInterruptHandler(timer3_Interrupt);

    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();

    // Enable the Peripheral Interrupts
    INTERRUPT_PeripheralInterruptEnable();

    // Disable the Global Interrupts
    // INTERRUPT_GlobalInterruptDisable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();

    TMR1_SetInterruptHandler(TMR1_interrupt);
    
    
    while (1)
    {
        // Add your application code
    }
}

割り込み処理について

TMR1によって、一秒おきにLED_01_Toggle()が呼び出されます。
設定したピンのHigh,Lowが反転し、LEDが点滅します。

void TMR1_interrupt(void){

    LED_01_Toggle();
    
}

動作フロー

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?