ArduinoでMCP23S17を使ってみる。

Microchipから出てる16bit I/O Expander MCP23S17を使って16個のLEDを光らせてみた。

随分前に仕入れたのだけどなかなか試す機会がなく今になってしまった。
当初はArduinoでなくてAVRに直接Cで書くつもりだったので面倒だったんだよねw
LEDを光らせるのが目的ではないのだけど、とっかかりはやっぱLチカ。
全体
No WAITでuint16を加算しているだけなので最速はこんな感じなのかな。
計測器が無いのでどれ位の速度出てるのか正確には分からないけどそこそこ出てる気がする。
サンプルはUNOなのでSPIの端子がLeonardoと扱いが違うので少しはまった。
LeonardoはICSP端子から直接接続した。


俺の目だと10bit目以降でようやく点滅が目視出来る。



今回はgithubにあるライブラリを使ってお手軽に済ませたけどSPIのコントロールは他でも使いたいので、そのうちちゃんとデータシート見ながらSPIライブラリでコントロールしてみる。


※Arduino本家のPlaygroundに掲載されているMCP23S17のClassは2012年のモノですでにダウンロードリンクが切れています。

#include <SPI.h>
#include <Mcp23s17.h>

#define MCP23S17_SLAVE_SELECT_PIN  10

MCP23S17 Mcp23s17 = MCP23S17( MCP23S17_SLAVE_SELECT_PIN,0 );
uint16_t i = 0;

void setup(){
  Mcp23s17.pinMode(OUTPUT);
}
void loop(){
    Mcp23s17.port(i++);
}