PIC12F1822のI2C Slaveが不安定なのとMPLAB Xが重いので、部品棚のマイコンストックを見回してMSP430のI2C SlaveをPlatformIOで作ってみました。
もちろん開発はFreeBSDのBastilleBSDでおこないます。
githubを探したら以下のコードがありました。
このレポジトリのslave/srcをpioでビルドしてみます。
mspdebugはpioの物はライブラリがなくて動かないのでbastille pkgでFreeBSDのpkgをインストールしておきます。
% pio init --board lpmsp430g2553
ソースをコピー
% pio run
% mspdebug rom-bsl -d /dev/cuaU0 "prog .pio/build/lpmsp430g2553/firmware.elf"
以前timsp430を試した時は32Bitで試して上手くいかなかったようなのですが、64Bitではちゃんとパッケージがあってビルドできました。
ときどきmspdebugがターゲットを認識しない事があり、その時は接続しなおすと上手くいくことがあります。
USBのシリアルインターフェースがjail内でユーザ権限でアクセスできるようにしてあります。どっかに設定方法書いたような記憶があります。
I2Cのピンは以下のように接続します。
ピン | 機能 |
---|---|
1 | VCC |
20 | GND |
14(P1.6) | SCL |
15(P1.7) | SDA |
蟹さんのmruby on YABMでLチカできました。
# 初期化省略
MSPADDR = 0x48
loop do
yabm.i2cwrite(MSPADDR, 0, 0)
yabm.msleep 2_000
yabm.i2cwrite(MSPADDR, 0, 1)
yabm.msleep 2_000
end
FreeBSDでもいけました。
MSPADDR = 0x48
t = BsdIic.new(0)
loop do
t.write(MSPADDR, 0, 0)
sleep 2
t.write(MSPADDR, 0, 1)
sleep 2
end
PIC12はまともなオープンソースが無いのも辛いです。
蟹さんでreadすると落ちます。oz_