Leonardo で SDカードを使う [Arduino]
AVRのICのピンはいろんな機能を兼ねていて、普段は通常のIOピンとして使っているピンをPWMとして使ったり、アナログ入力として使ったりしていますが、SDカードはSPI (Serial Peripheral Interface) の機能を使っています。
Duemilanove, Uno はSPI関連のピンが D11 (MOSI), 12 (MISO), 13 (SCK) とICSP (In-circuit serial programming) 端子に重複してありましたが、Leonardo は ICSP端子にのみSPI関連ピンがでています。
そこでICSP端子をSDカードの読み書きに使ってみたいと思います。
(Arduino基板にはICSPとシルクプリントしてありますが、ICSPはMicrochip社の商標のようで、ISP (In-system programming) と同じことのようです。)
ピンの関係を表にまとめてみました。
これをもとにして接続しました。
SS (Slave Select) (スレーブ側からはCS (chip select)) は、Arduino IDEサンプルのとおりデジタル4番にしました。
CardInfo のスケッチを書き込んでみたところ、なんの変更もせずにそのまま使えました。
ただ、書き込み後の Leonardo とのシリアル接続のタイミングがよくわからず戸惑いました。
スケッチを書き込んだ後、USBケーブルを抜いて、また挿して、シリアルモニタを起動すると確認できました。
Leonardo は Duemilanove, Uno と違って、1チップでUSBシリアル変換したり、USB HIDデバイスになってみたりすることや、リセットするとシリアル接続もリセットされるのか挙動が理解できていないのでもう少し勉強してみます。
Duemilanove, Uno はSPI関連のピンが D11 (MOSI), 12 (MISO), 13 (SCK) とICSP (In-circuit serial programming) 端子に重複してありましたが、Leonardo は ICSP端子にのみSPI関連ピンがでています。
そこでICSP端子をSDカードの読み書きに使ってみたいと思います。
(Arduino基板にはICSPとシルクプリントしてありますが、ICSPはMicrochip社の商標のようで、ISP (In-system programming) と同じことのようです。)
ピンの関係を表にまとめてみました。
これをもとにして接続しました。
SS (Slave Select) (スレーブ側からはCS (chip select)) は、Arduino IDEサンプルのとおりデジタル4番にしました。
CardInfo のスケッチを書き込んでみたところ、なんの変更もせずにそのまま使えました。
ただ、書き込み後の Leonardo とのシリアル接続のタイミングがよくわからず戸惑いました。
スケッチを書き込んだ後、USBケーブルを抜いて、また挿して、シリアルモニタを起動すると確認できました。
Leonardo は Duemilanove, Uno と違って、1チップでUSBシリアル変換したり、USB HIDデバイスになってみたりすることや、リセットするとシリアル接続もリセットされるのか挙動が理解できていないのでもう少し勉強してみます。