PICのCコンパイラ

フリーで使いたいとすると、XC8が使いたい所。
こちらで色々紹介されています。
http://homepage3.nifty.com/mitt/pic/xc8/xc8_ix.html
ただ、今年出たばかりでサンプルソースが中々見つからない。IDEもいい感じだけど。

ソースが多そうなPICC LITEでしばらくやってみます。
XC8に統合されてそのままでは入手できないみたいだけど、うまいこと入手できました。
http://d.hatena.ne.jp/garyo/20121021/p4
待ちは

    __delay_us(150); 
    __delay_ms(150);

で出来そうだけど、これが標準ライブラリなのかどうかイマイチわからない所。

Hitech C

Hitech Cでサンプルソース
http://sky.geocities.jp/home_iwamoto/picc_02.htm
http://physics.cocolog-nifty.com/weblog/2012/07/post-9765.html

Hitech Cでのコンフィグの説明
http://sky.geocities.jp/home_iwamoto/picc_03.htm

バージョンによってコンフィグの表記が変わるとか。
http://homepage3.nifty.com/mitt/pic/picc/piccix.html

C:\Program Files\HI-TECH Software\PICC\9.83\include
のヘッダーファイル調べてみたら
pic.hで__config()マクロが定義してあって定数はpic16f84a.hで定義してあった。
pic16f84aでつかうのはこれ

// Config Register: CONFIG
#define CONFIG               0x2007
// Oscillator Selection bits
// RC oscillator
#define FOSC_EXTRC           0xFFFF
// HS oscillator
#define FOSC_HS              0xFFFE
// XT oscillator
#define FOSC_XT              0xFFFD
// LP oscillator
#define FOSC_LP              0xFFFC
// Watchdog Timer
// WDT enabled
#define WDTE_ON              0xFFFF
// WDT disabled
#define WDTE_OFF             0xFFFB
// Power-up Timer Enable bit
// Power-up Timer is disabled
#define PWRTE_OFF            0xFFFF
// Power-up Timer is enabled
#define PWRTE_ON             0xFFF7
// Code Protection bit
// Code protection disabled
#define CP_OFF               0xFFFF
// All program memory is code protected
#define CP_ON                0xC00F

セラロックを使用したいので「FOSC_HS」を使用
http://www.picfun.com/pic20.html
Watchdogは使わないので「WDTE_OFF」
コードプロテクトもしないので「CP_OFF」
Power-up Timerは使うので「PWRTE_ON」
以下の設定になった

#include "pic.h"

__CONFIG(FOSC_HS & WDTE_OFF  & PWRTE_ON & CP_OFF);

pic16f84aで組んでみたソースがこれ。ポートを2本モニターして他のポートを動かしリレーを制御する。標準ロジックでも組めるけど。

/*****************************************************************
    xx-xxx xxxxxxx 電流切替回路
    xxxxxxx 追加回路用

  DATE       VER   NAME     COMMENT
  2012/10/22 V0.00 XXXXXX  新規作成
*****************************************************************/
#include "pic.h"

__CONFIG(FOSC_HS & WDTE_OFF  & PWRTE_ON & CP_OFF);


int main(void) {
	unsigned char a;
	
	PORTB = 0;
	TRISB=0b00000011;          // PORTB IO 0,1BITを入力、他をを出力に設定

	while(1) {
		a = PORTB & 0b00000011;
		
		switch(a){
			case 0:		//Relay ALL OFF
				PORTB = 0b00000000;
				break;
			case 1:		//RB4:1 RB5:0 RB6:0
				PORTB = 0b00010000;
				break;
			case 2:		//RB4:1 RB5:1 RB6:0
				PORTB = 0b00110000;
				break;
			case 3:		//RB4:0 RB5:0 RB6:1
				PORTB = 0b01000000;
				break;
		}
	}
}

PICC Lite 入手先

ネット上ではPICC Liteで書いたソースが多いので
こちらのサイトを参考に
http://homepage3.nifty.com/mitt/pic/picc/piccix.html
以下から「HI-TECH C Compiler for PIC10/12/16 MCUs (PRO/Standard/LITE) Update v9.83」を入手
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en542849


こちらのサイトを参考にPIC12F683でブレッドボードでLEDの点滅に成功
http://motuelectro.blog.fc2.com/blog-entry-15.html

MPLAB X IDEでPIC Kit3に給電する設定方法

PIC Kit3を使うときにPIC Kit3からマイコンに給電しないと動かない。以下のエラーメッセージが出る。

Target device was not found. You must connect to a target device to use PICkit 3.

この時の対処方法は以下の通り。

MPLAB X IDEはMPLAB IDEより改良されているようだが、メニューの項目が全然変わっているのでむつかしい。


MPLAB X IDEでPIC Kit3からの給電をONにするためには
プロジェクトを開いた状態で「RUN」-「Set Project Configuration」を「customize」にして
左側の「Categories」の「Pickit 3」をクリック
「Option categories」の「Power」を選択
「Power target circuit from PICkit3」にチェックを入れ「OK」をクリック。
これで動くようになります。

PIC Kit3を使ってみた


PICkit3デバッグエクスプレス
http://akizukidenshi.com/catalog/g/gM-03480/
実験用基板(PIC18F45K20−I/PT搭載)付き
http://akizukidenshi.com/img/goods/L/M-03480.jpg

PIC Kit3のみ
http://akizukidenshi.com/catalog/g/gM-03608/
http://akizukidenshi.com/img/goods/4/M-03608.JPG


PIC Kit3のみの方が安いけど、最初は実験用基板付きのPICkit3デバッグエクスプレスが楽しいと思います。

PCとUSBケーブルで接続してPICマイコンから6本の線を引き出してピンヘッダーをつけるだけでオンボードでPICの書き込みができるのですごく便利。

色々試してみてやっと動くようになりました。

開発環境は
http://www.microchip.com/pagehandler/en-us/family/mplabx/#downloads
こちらから
MPLAB® X IDE v1.41 と
MPLAB® XC8 Compiler v1.10 をダウンロード
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002
こちらから
MPLAB IDE v8.88  をダウンロード

XC8はマイクロチップ・テクノロジ社が2012年4月に提供開始した、8ビットPIC向けCコンパイラとのこと。
HI-TECH C (PICC/PICC18)の後継コンパイラでPIC10/PIC12/PIC16/PIC18に対応している。

PIC16までと比べてPIC18はプログラムメモリにバングがなくなってリニアになって使いやすいみたい。
PIC Kit3に付属のボードもPIC18F45K20でPIC18系。PIC18系にはUSBに直結できるPIC18F14K50−I/P
http://akizukidenshi.com/catalog/g/gI-03031/
もあって人気のようだ。170円と安いし。

PICの流れとしてはPIC10-PIC16までのアーキテクチャC言語を意識してかなり使いやすくなったPIC18,DSP内蔵のdsPicとその技術を応用したPIC24(かなり高速・高機能)があるみたいだ。
PIC10には35円で買えるPIC10F200−I/Pもあるので、用途に応じて使い分けると良さそう。
http://akizukidenshi.com/catalog/g/gI-02103/

PICの大体の流れはこの記事がわかりやすかった。
http://www.mal.jp/open/information/info_dspic_introduction.html


PICkit3デバッグエクスプレス付属の実験用基板の動かし方は以下の通りです。


PICkit3デバッグエクスプレス付属のCDの D:\Manuals\PICkit 3 Debug Express Lessons.zipにサンプルプログラムが入っています。
これをCドライブにコピーして解凍します。例 C:\project\pic\PICkit 3 Debug Express Lessons
適当なフォルダを作り(例 C:\project\pic\hello),C:\project\pic\PICkit 3 Debug Express Lessonsのフォルダから「01 Hello LED.c」をコピーして入れます。

1.まずMPLAB IDEを起動します。
2.「Project」-「Project wizard」をクリック
3.「次へ」をクリック
4.Deviceで「PIC18F45K20」を選択し「次へ」をクリック
5.「次へ」をクリック
6.Create New Project Fileで「Browse」をクリックして
「C:\project\pic\hello」のフォルダを選択して「ファイル名」に何か入れて(例 hello)「保存」をクリック
7.「次へ」をクリック
8.「01 Hello LED.c」を選択して「Add>>」をクリック
9.「次へ」をクリック
10.「完了」をクリック
11.「Project」-「Build」をクリック

********** Build successful! **********

と表示されるとOK。

PICkit3デバッグエクスプレス付属のデバッグ基板とPICkit3を接続し、PICkit3とPCをUSBで接続します。
1.「Programmer」-「select programmer」-「6.PICKIT 3」を選択。
2.「OK」をクリック
3.この時

PK3Err0045: You must connect to a target device to use PICkit
3.

とエラーが出るので、「Programmer」-「settings」をクリック
4.「Power」タブをクリックし「Power target circuit from PICkit3」にチェックを入れ「OK」をクリック
5.「OK」をクリック
6.「Programmer」-「program」をクリック

Programming...
Programming/Verify complete

と表示して、デバッグ基板の左端のLEDが一つだけ点灯すればOK


他のサンプルソースもヘッダーファイル(拡張子が.h)の最後に#endifが無いとか何か修正しないと動かないので注意。

サーボモーターを制御してみたい。

サーボモータの制御
http://homepage3.nifty.com/mitt/pic/pic5_23.html

共立電子プチロボ - ロボットを作ろう @ ウィキ - アットウィキ

HAKU | ORIGINALMIND オリジナルマインド

PIC サーボの制御

http://homepage1.nifty.com/rikiya/software/112servo1.htm

プチロボ改の部品表など
http://wonderkit.kyohritsu.com/roidpr2/index.html