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
を初めて見た。
とりあえず秋月で、ライターのPICkit3(3900円)とPIC18F14K50の切手サイズのボード
(800円)などを購入してみた。
Microchipのページで、IDE(1.60)とXC8(1.12)というコンパイラーとサンプルコード
が含まれるライブラリ(v2012-10-15)のディスクイメージをダウンロードして
インストールしてみた。ライブラリをすべてインストールすると2Gくらいあり
ちょっと大きい。
ネットでいろいろ検索してみたところ、
PIC を使ってみるや
18F14K50覚書や
電子工作実験室
が参考になりそうだ。
8ビット、16ビット、32ビットで全く違ったアーキテクチャーをサポートするため
IDEの使い方やサンプルコードは非常に分かりにくくなってしまっている
感じがする。
PIC18F14K50には電源を供給する設定にする事で焼く事ができた。
肝心のUSBスタックだがC18というコンパイラーを使用して作られているのだが、
C18はXC8に移行したのだが互換が無くコンパイルできなくなっている。C18はWindows
用のバイナリはまだダウンロード可能だが、Mac用は無くなってしまっている。
(2013/02/16)
という状況なので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)
上記は古い方のソースで新しい物もビルドしてみたが、アセンブラが違う為か
バイナリのサイズが微妙に変わっている。
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)
はじめての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に接続されている。
@h_nariさんやきむさんや莎華さんなどPICは熊本が熱い。
PIC32MXについては、
こちらが参考になる。
PIC32MXネタはこちらに分けてみた。
かなり悩んだのだが、PIC32MXの開発が思ったように進まないので、気晴らしに
PICKit2のクローンを作ってみた。ネットにいろいろ回路図があるが、以下の仕様で
作ってみた。
- シリアルNoなどを入れているEEPROMは付けない
- ターゲットへの電源供給機能は付けないでターゲットからの基準電圧の供給を
受ける
- AUX(6ピン)の回路は省略
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.