https://github.com/WallaceIT/picberry/pull/6
何か修正依頼来るかなぁと思ったけど、そのままマージされた…。
そういや買って来たUSB対応のPICに、まだ対応させていないや。あとでやらないと。
Just another WordPress site
https://github.com/WallaceIT/picberry/pull/6
何か修正依頼来るかなぁと思ったけど、そのままマージされた…。
そういや買って来たUSB対応のPICに、まだ対応させていないや。あとでやらないと。
-f pic10f322と指定するだけで、あとは自動的にデバイスIDからなんとかするようにした。
今では、この表は、あまり意味がない。
Model | subfamily | family |
PIC10F320 | SF_PIC10F322 | pic10f322 |
PIC10F322 | SF_PIC10F322 | pic10f322 |
PIC10LF320 | SF_PIC10F322 | pic10f322 |
PIC16F1826 | SF_PIC12F1822 | pic12f1822 |
PIC16F1827 | SF_PIC12F1822 | pic12f1822 |
PIC16LF1826 | SF_PIC16LF1826 | pic16lf1826 |
PIC16LF1827 | SF_PIC16LF1826 | pic16lf1826 |
PIC16F1823 | SF_PIC12F1822 | pic12f1822 |
PICLF1823 | SF_PIC12F1822 | pic12f1822 |
PIC12F1822 | SF_PIC12F1822 | pic12f1822 |
PIC12LF1822 | SF_PIC12F1822 | pic12f1822 |
PIC16F1824 | SF_PIC12F1822 | pic12f1822 |
PIC16LF1824 | SF_PIC12F1822 | pic12f1822 |
PIC16F1825 | SF_PIC12F1822 | pic12f1822 |
PIC16LF1825 | SF_PIC12F1822 | pic12f1822 |
PIC16F1828 | SF_PIC12F1822 | pic12f1822 |
PIC16LF1828 | SF_PIC12F1822 | pic12f1822 |
PIC16F1829 | SF_PIC12F1822 | pic12f1822 |
PIC16LF1829 | SF_PIC12F1822 | pic12f1822 |
今の段階でのPICの種類と引数につけるfamilyの対応表を出してみた。familyが-fオプションにつける文字列だ。表が間違っていないと信じたい。
例えば、PIC10LF320に書き込む場合、表より、familyはpic10f322になるので、以下のようにすれば良い。
./picberry -f pic10f322 -w hoge.hex
PIC10F322とPIC12LF1822しか持っていないので、この2種類でしかテストしていない。しかも、テストは単純なLチカしか行っていない。どんなプログラムでも本当にちゃんと書き込めているのか、全くわからない。長いプログラムは最後の方とかまでちゃんと書き込めているのかなんとなく不安だ。
ああ、そうだ。今回のプログラミングではLow-Voltage ICSP™ modeにしか対応していない。高電圧のプログラミングはいずれ対応したいと思っている。その前に、まずはチャージポンプを完成させなければならない…
今度の週末にでも秋月に行って、PIC16F182[3579]を買おうと思っている。買ったらうまくいくかどうかテストしてみる予定だ。
USB対応の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書き込み環境が揃えられた。
なにも持っていなくて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送れるのはいつになるやら。