PICマイコンを焼いてみた
追記
読みづらい文章だと思うので、こちらにわかりやすく要点を書き直したのをあげた。
2018/5/21追記:
公式サイトや紹介しているブログを見てもらうと早いが、pickleが幅広いPICマイコンに対応している。下記で紹介されている方法では、限られたPICマイコンしか書き込みができない。pickleを使ったほうが、いろんなPICマイコンに対応していて便利かもしれないのでご参考に
元の文章
秋月でPIC10F322とPIC12LF1822を購入してみた。
しかし、よくよく考えたら、PICライターを持っていなかった。
PICkitは5000円以上で高いし、AliExpressに転がっている謎の互換品でも10ドルくらいする。AliExpressで買っても良さそうだけど、届くまでかなりの時間がかかってしまうんだよな。すぐに遊びたい。
ArduinoのPICライターがあるっぽいけど、家に帰ってよく調べてみたら自分の使いたいPICは見事に対応していなかったようだ。というか、そもそも持っているArduino Unoは5VのIOピンで、購入したPIC12LF1822は5Vに耐えられない仕様だった。なんでLFなんて買ってしまったのか今となってはよくわからない。
ESP8266をArduinoにさせる何かでも使おうかと思ったけど、あんまり意味がなさそう。
そういえば、Raspberry Piがごろごろ転がっていたので、これのGPIOを使って焼けないかと思っていたら、GitHubに見事にそれっぽいのが転がっていた。picberryというソフトを使えば買って来たマイコンが焼けるかと思いきや、そういう訳にも行かなかった。
これもまた買って来たPICが対応していなかった。しかし、ソースコードは思ってたよりも読みやすく、利用できそうだった。ので、PIC12F1822ファミリーのフラッシュメモリ書き込み仕様書を読みながら対応させた。PIC10F322ファミリーのフラッシュメモリ書き込み仕様書も見ていた。
https://github.com/akimasa/picberry/tree/devel
上記URLになる。
make raspberrypiかmake raspberrypi2でいけたと思う。
説明に書いてあった。GPIOを叩くだけっぽいので、BeagleBoneとかでもいけるらしい。試していないのでうまくいくかどうかはわからない。
自分はRaspberry Pi Zeroでやってみた。
イギリスの通販で買えば、500円もしなかった。送料がかかるので、送料込みだと結構な値段になるが、Raspberry Pi用のカメラとかも安かったので正月に色々まとめて買っていた。日本でも、Pi Zeroは最近発売されたらしいが、品薄だ。値段は確か、税抜き600円だったっけな。使うとなると、microSDにUSBケーブルが最低限必要になるので、揃えると1000円は超えそう。さらに、スルーホール用のテストワイヤーもあると便利。250円か。microSDにOSを入れる術も用意しておかないといけない。これは、microSDカードリーダーがあればいける。あと、ブレッドボードも必要かな。幸いなことに、OSの入ったmicroSDもUSBケーブルもテストワイヤーも全て家に転がっていた。したがって、出費なしでPIC書き込み環境が揃えられた。
- Raspberry Pi Zero 600円
- microSDHC 16GB 600円?
- USBケーブル 100円?
- テストワイヤー 250円
- microSDカードリーダー 不明(PCに内蔵されていた)
- ブレッドボード 270円?
なにも持っていなくてPICマイコンだけ買ってしまっても、これだけ揃えれば書き込みができる。今だとPi Zeroを入手するのが一番難しいか。その場合は、他のGPIOのついたRaspberry Piでも代用が充分できるが、少し高い。あと、片側がソケットになっているジャンパワイヤーが必要。Raspberry Piはピンヘッダがついているのでピンソケットで接続しないといけない。
sudo ./picberry -f pic10f322 -w ramen_int2.hex
さて、上記コマンドでPIC10F322にうまいこと拾って来たhexファイルを焼くことができて、正常に動作するらしいことが確認できた。
PIC12LF1822にも同じサイトにあるhexファイルを拾って、見事に機能することが確認できた。書き込み時に-f pic12f1822と指定するといけたと思う。どのようなオプションをつければ良いかは後ほどまとめるかもしれないし、まとめないかもしれない。
3/20追記:今ではpic10f322と指定するだけでデバイスIDから自動検出するようになりました。
書き書きできたので、何か作ろうと思って、sdccをhomebrewで入れてみた。コンパイル済みのものが降って来たのだが、あれを結構使っている人がいるってことだろうか。10年くらい前に使ってみて、delayが無いので不便だと思ってたけど、今になっても指定したミリ秒やマイクロ秒だけウェイトを入れる機能がない…
なんかうまい解決方法があるんかなぁ…。microchip公式の開発環境を使った方がいいんのかな。
とりあえず、Lチカ(違)はできた。ソースコードを置いておく。RA2を圧電スピーカーにでも繋ぐと音が出る(ぉぃ
とりあえず、ライターは動くものが出来ているけど、表示されている書き込みアドレスがおかしかったり、進捗がおかしかったりしているので、後で直して、プルリクエストを送るんだ…。ああ、そうだ。デバイスIDで機種を自動検出しないとな…。結構、やること多くて、PR送れるのはいつになるやら。