PIC

お約束ですが、このページのいかなる記載においても著者は一切の責任をおいません。
PIC32MX関係

2011年の後半にMPLAB XというIDEがリリースされてMac OS Xでも開発ができるように なって、安価にUSBのFull Speedなデバイスが作れるみたいなので、PICを初めて見る 事にした。(2013/02/11)

AVRを使ったV-USBはLow SpeedでHIDなどでは問題ないが、バルク転送が出来ないため シリアルなどのデバイスにはなれないのでFull Speedなデバイスが安価で作れるPIC を初めて見た。

スクリーンショット(2013-02-17 10.07.14)

とりあえず秋月で、ライターのPICkit3(3900円)とPIC18F14K50の切手サイズのボード (800円)などを購入してみた。

Microchipのページで、IDE(1.60)とXC8(1.12)というコンパイラーとサンプルコード が含まれるライブラリ(v2012-10-15)のディスクイメージをダウンロードして インストールしてみた。ライブラリをすべてインストールすると2Gくらいあり ちょっと大きい。

ネットでいろいろ検索してみたところ、 PIC を使ってみる 18F14K50覚書電子工作実験室 が参考になりそうだ。

8ビット、16ビット、32ビットで全く違ったアーキテクチャーをサポートするため IDEの使い方やサンプルコードは非常に分かりにくくなってしまっている 感じがする。

PIC18F14K50には電源を供給する設定にする事で焼く事ができた。

スクリーンショット(2013-02-15 23.15.47)

肝心のUSBスタックだがC18というコンパイラーを使用して作られているのだが、 C18はXC8に移行したのだが互換が無くコンパイルできなくなっている。C18はWindows 用のバイナリはまだダウンロード可能だが、Mac用は無くなってしまっている。 (2013/02/16)

スクリーンショット(2013-02-15 23.15.36)

という状況なのでXC8でコンパイルできるUSBスタックが用意されるまで待つ事に する。(2013/02/16)

過渡期なのかいろいろ不思議な事あって、PICkit2ではMac用のコマンドラインツールが アンサポートなのだが提供されていたがPICkit3にはまだない。PICkit3が出てもう 3年くらいはたっているはずなのだが。

pk2cmdのMac版のコードはlibusbを使っていないようだ。MPLAB Xが/usr/local/lib にコピーしているlibmchpusb-1.0.dylibはlibusbベースのようなのだが。

竹岡さんの ページにPIC32の記事があったので、ライブラリのサンプルをXC32にコンパイル してみたら、こちらは問題なくコンパイルできた。(2013/02/17)

と思ったが、アセンブラで USBスタックとブートローダーを作っている人がいたので、Makefileを修正して ビルドして、MPLAB Xに読み込ませ、PICkit3で焼いてみた。(2013/02/20)

スクリーンショット(2013-02-20 23.26.18)   スクリーンショット(2013-02-20 23.40.27)

上記は古い方のソースで新しい物もビルドしてみたが、アセンブラが違う為か バイナリのサイズが微妙に変わっている。
bash-3.2$ ls -l *.hex hexfiles/
-rw-r--r--  1 hiroki  staff  4844 Feb 21 20:29 loader-18F14K50.hex

hexfiles/:
total 32
-rw-r--r--@ 1 hiroki  staff  4969 Sep 17  2010 loader-18F14K50.hex
-rw-r--r--@ 1 hiroki  staff  4932 Sep 17  2010 loader-18F2550.hex
pic18boot-2010-0406.zipをMacで使う為の 修正ファイルを作ってみた。

ビットトレードワンさんが公開して いる赤外線リモコンを作ってみました。手持ちの部品で作ったので部品がちょっと 違っています。受信は必要ないので送信部分のみで作ってあります。 PIC18F14K50でC18のソースのため手元でコンパイルはできずHEXを直接焼いています。 (2013/03/02)

IMGP1722

はじめてのPIC も参考になりそう。 こちら にも莎華(SAKA)さんのHID Bootローダーがあった。

Mac OS XでアプリケーションがUNIXのパスにコピーするのはあまり好きではないの だがMPLAB Xは/usr/libにlibusbと/usr/local/libにpickit3用のライブラリをコピー している。なんともいただけない。libusbをコピーされるとオープンソースを configureかけるとそれをリンクしてしまい、MPLAB Xを消すとそのバイナリまで 動かなくなるから大変迷惑な事である。

そもそもpk2cmdv1.20LinuxMacSourceというPicKit2のサポート対象外のオープンソース はIOUSBを直接使ったコードがあったのに、MPLAB XのMacサポートではlibusbを使って いるのは、なんでだろう?(古い)

XC8にUSBのスタックを「きむ茶工房ガレージハウス」さんが 移植してくれた。設定をちょっといじって、ちゃんとビルドできた。 オリジナルがlhaだったりするのでいじったファイルをとりあえず 置いておく。 本家はPIC24/PIC32に影響が出ないように修正しなければなら ないので、なかなか進まないのかもしれない。やっぱり同じソースで3つの アーキテクチャーをサポートするのは、無理があるような気がする。 2つくらいだったらまだ良いのだが、そもそも開発者に見てもらって理解してもらう コードなのにいろいろ入っていて見通しが悪いのは本来の目的から外れているような 気がする。

MPLAB XはいったんIDEにプロジェクトを追加して削除するとプロジェクトのファイルを 消すチェックを付けてないのと、ファイルを勝手に消してしまう。 ライブラリで展開されたmicrochip_solutionsのプロジェクトを直接追加して削除する と元に戻らない。初めてTime Machine使って元に戻してみたみた。まったくなんだかな って感じ。

Make Faireで、@h_nariさんにPIC32MXの 基板を分けてもらった。 とりあえず必要最小限の部品を実装して、以前試した、Lチカを動かしてみた。この 基板のLEDはRB15に接続されている。

IMGP2513

@h_nariさんやきむさんや莎華さんなどPICは熊本が熱い。

PIC32MXについては、 こちらが参考になる。 PIC32MXネタはこちらに分けてみた。

かなり悩んだのだが、PIC32MXの開発が思ったように進まないので、気晴らしに PICKit2のクローンを作ってみた。ネットにいろいろ回路図があるが、以下の仕様で 作ってみた。
IMGP0382
bash-3.2$ ./pk2cmd -PPIC18F14K50 -I
Device ID = 4760
Revision  = 0000
Device Name = PIC18F14K50

Operation Succeeded
bash-3.2$ ./pk2cmd -PPIC18F14K50 -F../RemoconServant-2.1.0/RemoconServant210.hex
 -M
PICkit 2 Program Report
1-6-2014, 22:30:32
Device Type: PIC18F14K50

Program Succeeded.

Operation Succeeded

PIC18F2550へのファームの書き込みはPICKit3を使った。PIC32MX用にpic32progで使う 事を想定して作ったのだが、なぜかpic32progではチップが認識されない。出来上がった 当日はちゃんと動いていたような気がするのに。。PIC18F14K50への書き込みは問題ない のだが。

MPLAB XからPIC18F14K50へ電源供給してフラッシュを焼くときには、5Vの指定が出来ず 3.3Vとしているが、pk2cmdから作成したPICKit2クローンで焼く時はUSBの5Vで焼いてい る。正常に焼けていてとくにエラーなどはないが、大丈夫なのかな。。。

YS電子工作ラボもいろいろ記事が ある。

pic32prog用に作ったPickit2クローンがMPLABX 1.6やpk2cmdでPIC18Fには問題なく使える のだが、肝心のpic32progでは認識できなかったりで使えない。。。なんだかな。。。

bash-3.2$ ./pk2cmd -P -F ../USB-Blaster7/Blaster7SPI.hex -R -M
Auto-Detect: Found part PIC18F14K50.

PICkit 2 Program Report
21-2-2015, 20:04:36
Device Type: PIC18F14K50

Program Succeeded.

Operation Succeeded

こちらのpickit2のクローンが良い感じだ。

さるのこしかけにPICkit2のロジアナ機能を加えてみた。自作のPICkit2クローンは せっかくなのでAUXも実装して3チャンネル使えるようにしてみた。



Copyright (C) 2013-2014 Hiroki Mori All Rights Reserved.