G2507_U35_MCP23017_I/Oエキスパンダー(入力)
2025年1月7日
9:50
G2507_lpc11u35_MCP23017_io_expander_input_report
実験後の考察
16bit I2C I/Oエキスパンダー MCP23017: 半導体 秋月電子通商-電子部品・ネット通販
共用関数の手直し MCP23017_red()
プロジェクトの説明、入力テスト
uint8_t old_dat[8+1];
// 誤動作防止のため、実装されていないバンクはアドレスゼロ設定必要
Exp_23017_add_tbl[0] = 0x40;
Exp_23017_add_tbl[1] = 0;
Exp_23017_add_tbl[2] = 0;
Exp_23017_add_tbl[3] = 0;
// 16ビットすべて入力に設定する
MCP23017_inp_init(0); // バンク単位入力設定
MCP23017_inp_init(1); // バンク単位入力設定
// 前回データの更新
MCP23017_red(0); old_dat[0] = Exp_23017_dat[0];
MCP23017_red(1); old_dat[1] = Exp_23017_dat[1];
MCP23017_red(0); // バンク0 読み込み
MCP23017_red(1); // バンク1 読み込み
if(old_dat[0] != Exp_23017_dat[0] || old_dat[1] != Exp_23017_dat[1])
{
// 変化がありました
UART_puts("PA (");
for(i=0;i<8;i++) UART_msg_dec("",MCP23017_bit_chk(0,i)," ");
UART_puts(") PB (");
for(i=0;i<8;i++) UART_msg_dec("",MCP23017_bit_chk(1,i)," ");
UART_puts(")\r\n");
// 前回値更新
old_dat[0] = Exp_23017_dat[0];
old_dat[1] = Exp_23017_dat[1];
}
実験結果
速度計測