電子工作

【電子工作】初心者向け!PICマイコン「書込みアダプター/テストボード」製作

【電子工作】初心者向け!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を始められる方など、今度の開発環境の一部にご参考いただければ幸いです。