【電子工作】初心者向け!PICマイコン「書込みアダプター/テストボード」製作
PICマイコンの開発環境は、一般的にIDE(総合開発環境)を利用し、ライターを用いて転送します。
本記事では、私が使用しているPICマイコンの開発環境の一部を紹介いたします。
はじめに
種類が豊富で、様々なシリーズがあるPICマイコン、私が主に使用するPICマイコンは、汎用一般的でかつ開発環境に便利なDIP形式 8、18ピンタイプを利用しています。
下記仕様を持ち合わせた機能を持つ、自作で簡易的な専用ボードです。
書込みアダプター
Microchip社 純正の「PICkit4」専用の接続アダプター。
プログラムの転送に便利な、ライターとPICを接続するための接続用アダプターボードです。
テストボード
PICマイコンの動作を確認(テスト)する為のボード。
- GPIOの入出力チェック
- 簡易テストプログラム実行に伴う、PICチップ単体テスト(破損など)
アダプターとテストの二つの機能が合わさる、自作の簡易的な専用ボードです。
開発環境
2021年現在での環境下で構成される内容となります。
- PC
Windows PC (Windows10 64ビット) - IDE、コンパイラー
MPLAB X IDE (V5.45)
XC8 - ライター
Pickit 4
8ピン専用ボード
8ピンPICで一般的な高機能タイプ「PIC12F683-I/P」のDIPを基準にしています。
部品表
回路図
テストプログラム
本テスト回路は、PIC12F683の電源ピン(Vdd)とグランドピン(Vss)を除く、入出力ピン(GP0~GP5)をLED接続(ジャンパー接続)させています。
なお、GP3は入力専用に基づき、ジャンパーを抜き、入力スイッチ専用として動作させ、
このGP3スイッチ押下時のみ、他のピンへの出力信号をLEDにて点灯させ、確認します。
つまり、GP3接続のタクトスイッチが押されている間のみ、他のLEDが全点灯する、テストプログラムです。
/*===============================================================================
/
/ PICkit4 書込みアダプター/テストボード(08ピン用) テスト プログラム
/
/ PIC 12F683
/
/ MPLAB X IDE v5.45 , XC8
/ https://www.pochiweb.com
/================================================================================
/ 12F683
/
/ 01-Vdd 08-VSS
/ 02-GP5 → LED 07-GP0/ICSPDAT → LED
/ 03-GP4 → LED 06-GP1/ICSPCLK → LED
/ 04-GP3/MCLR^ ← S/W 05-GP2 → LED
/
/================================================================================
*/
#include <xc.h>
#pragma config FOSC = INTOSCIO // 内部発振使用
#pragma config WDTE = OFF // Watchdog タイマ OFF
#pragma config PWRTE = ON // パワーアップタイマ(立上り待機) ON
#pragma config MCLRE = OFF // リセット(外部入力での) OFF GP3をI/O
#pragma config BOREN = OFF // ブラウンアウトリセット(低電圧検知) OFF
#pragma config CP = OFF // コードプロテクト(プログラム) OFF
#pragma config CPD = OFF // データ コード プロテクト OFF
#pragma config IESO = OFF // 内部、外部クロック切り替え OFF
#pragma config FCMEN = OFF // クロックモニタ OFF
#define _XTAL_FREQ 8000000 // 8MHz発振
int main(void)
{
OSCCON = 0x70; // 8MHz セット
GPIO = 0x00; // GPIO 初期化
TRISIO = 0x00; // TRISIO GP01245 OUTPUT
ANSEL = 0x00; // ANSEL デジタル設定(ANALOG OFF)
CMCON0 = 0x07; // コンパレータ OFF
while(1) { // 無限LOOP
if (GP3 == 0) // GP3 S/W 判定
{
__delay_ms(100); // チャタリング対策
if (GP3 == 0)
{ // ONの場合
GP0 = 1; // GP0 LED ON
GP1 = 1; // GP1 LED ON
GP2 = 1; // GP2 LED ON
GP4 = 1; // GP4 LED ON
GP5 = 1; // GP5 LED ON
}
} else { // OFFの場合
GP0 = 0; // GP0 LED OFF
GP1 = 0; // GP1 LED OFF
GP2 = 0; // GP2 LED OFF
GP4 = 0; // GP4 LED OFF
GP5 = 0; // GP5 LED OFF
}
}
return 0;
}
18ピン専用ボード
18ピンPICで一般的な低価格「PIC16F1827-I/P」のDIPを基準にしています。
部品表
回路図
テストプログラム
本テスト回路は、電源ピン(Vdd)とグランドピン(Vss)を除く、入出力ピン(RA0~RA7,RB0~RB7)をLED接続(ジャンパー接続)させています。
なお、RA5は入力専用に基づき、ジャンパーを抜き、入力スイッチ専用として動作させ、
このRA5スイッチ押下時に、他のピンへの出力信号をRA部はLED(緑)RB部はLED(赤)で交互点灯させ、確認します。
RA5接続のタクトスイッチが押されている間、RA部LED(緑)、RB部LED(赤)の交互点灯テストプログラムです。
/*===============================================================================
/
/ PICkit4 書込みアダプター/テストボード(18ピン用) テスト プログラム
/
/ PIC 16F1827
/
/ MPLAB X IDE v5.45 , XC8
/ https://www.pochiweb.com
/================================================================================
/ 16F1827
/
/ 01-RA2 → LED(G) 18-RA1 → LED(G)
/ 02-RA3 → LED(G) 17-RA0 → LED(G)
/ 03-RA4 → LED(G) 16-RA7 → LED(G)
/ 04-RA5/MCLR^ ← S/W 15-RA6 → LED(G)
/ 05-VSS 14-VDD
/ 06-RB0 → LED(R) 13-RB7/ICSPDAT → LED(R)
/ 07-RB1 → LED(R) 12-RB6/ICSPCLK → LED(R)
/ 08-RB2 → LED(R) 11-RB5 → LED(R)
/ 09-RB3 → LED(R) 10-RB4 → LED(R)
/
/================================================================================
*/
#include <xc.h>
// CONFIG1
#pragma config FOSC = INTOSC // 内部発振使用
#pragma config WDTE = OFF // Watchdog タイマ OFF
#pragma config PWRTE = ON // パワーアップタイマ(立上り待機) ON
#pragma config MCLRE = OFF // リセット(外部入力での) OFF , DIGITAL Input
#pragma config CP = OFF // コードプロテクト(プログラム) OFF
#pragma config CPD = OFF // データ コード プロテクト OFF
#pragma config BOREN = OFF // ブラウンアウトリセット(低電圧検知) OFF
#pragma config CLKOUTEN = OFF // RA6 I/O
#pragma config IESO = OFF // 内部、外部クロック切り替え OFF
#pragma config FCMEN = OFF // クロックモニタ OFF
// CONFIG2
#pragma config WRT = OFF // 4kフラッシュメモリ 保護 OFF
#pragma config PLLEN = OFF // 4xPLL 動作 OFF
#pragma config STVREN = OFF // スタック?オーバーフロー リセット OFF
#pragma config BORV = LO // 電源電圧降下常時監視 電圧設定 LO(1.9V)
#pragma config LVP = OFF // 定電圧プログラミング機能 OFF
#define _XTAL_FREQ 8000000 // 8MHz発振
int main(void)
{
OSCCON = 0b01110100; // 8MHz セット
ANSELA = 0b00000000; // RA デジタル設定
ANSELB = 0b00000000; // RB デジタル設定
TRISA = 0b00100000; // ポートA 出力設定(^RA5)
TRISB = 0b00000000; // ポートB 出力設定
PORTA = 0b00000000; // ポートA 初期化
PORTB = 0b00000000; // ポートB 初期化
while(1) { // 無限LOOP
if (RA5 == 0) // RA5 S/W 判定
{
__delay_ms(100); // チャタリング対策
if (RA5 == 0) // ONの場合
{
RA0 = 1 , RA1 = 1 , RA2 = 1 , RA3 = 1; // RA LED(G) ON
RA4 = 1 , RA6 = 1 , RA7 = 1; //
RB0 = 0 , RB1 = 0 , RB2 = 0 , RB3 = 0; // RB LED(R) OFF
RB4 = 0 , RB5 = 0 , RB6 = 0 , RB7 = 0; //
__delay_ms(300);
RA0 = 0 , RA1 = 0 , RA2 = 0 , RA3 = 0; // RA LED(G) OFF
RA4 = 0 , RA6 = 0 , RA7 = 0; //
RB0 = 1 , RB1 = 1 , RB2 = 1 , RB3 = 1; // RB LED(R) ON
RB4 = 1 , RB5 = 1 , RB6 = 1 , RB7 = 1; //
__delay_ms(300);
}
} else { // OFFの場合
PORTA = 0b00000000; // ポートA 初期化
PORTB = 0b00000000; // ポートB 初期化
}
}
return 0;
}
まとめ
PICの開発環境ボード等、様々な市販品が流通していますが、本記事ではこれらボードの一部を自作した形で紹介いたしました。
これからPICを始められる方など、今度の開発環境の一部にご参考いただければ幸いです。