MCP23S17を2個利用してスイッチパネルを作成しようと考えています。
1個での利用はサンプルプログラムが正常に動作しているのを確認しました。
mbedのNUCLEO-F303K8をターゲットに、オンラインコンパイラでプログラムしています。
ICのライブラリは以下のものです。
・問題
ボタンを一つしか押していないのに、結果を示す数値が2個とも同じ値になってしまいます。
例:「chip1=ffcf, chip2=ffcf」
#include "mbed.h"
#include "MCP23S17.h"
SPI spi(PA_7, PA_6, PA_5);//(mosi, miso, sclk);
MCP23S17 chip1(spi, PA_4, 0x40);//A0=A1=A2=GND
MCP23S17 chip2(spi, PA_4, 0x42);//A0= 3.3V, A1=A2=GND
DigitalOut Reset(PB_4);//
char port[]={0,0,0,0};
int main() {
Reset = 0;
wait(0.05);
Reset = 1;
chip1.direction(PORT_A, 0xFF);//input setting
chip1.direction(PORT_B, 0xFF);//input setting
chip2.direction(PORT_A, 0xFF);//input setting
chip2.direction(PORT_B, 0xFF);//input setting
chip1.configurePullUps(PORT_A, 0xFF);//pullup setting
chip1.configurePullUps(PORT_B, 0xFF);//pullup setting
chip2.configurePullUps(PORT_A, 0xFF);//pullup setting
chip2.configurePullUps(PORT_B, 0xFF);//pullup setting
while (1) {
port[0] = chip1.read(PORT_A);
port[1] = chip1.read(PORT_B);
port[2] = chip2.read(PORT_A);
port[3] = chip2.read(PORT_B);
printf("chip1=%0x%0x, chip2=%0x%0x\r\n",port[0],port[1],port[2],port[3]);
wait(0.2);
}
}