nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

プログラム i2cアドレススキャン

今回作った関数です。i2c_readack()はソフトi2cモジュールを作ったときから作ってあったんですが、いまいちまじめにデバッグせず今回やっと日の目見ました。バグもつぶせたし。

アドレススキャン関数です。i2c_readack()関数があったので、スタートコンディションの後にアドレス+W入れて、ACKをセンスすると言うものです。引っかかったアドレスをヘキサデシマル表示変換関数を経由LCD該当カーソル位置に表示します。

    
//   i2c address scanning test

unsigned char i2c_scan(unsigned char data){
 unsigned char ack_data;
 i2c_start();   // start condition
 i2c_write(data);  // addr & wite mode
 ack_data=i2c_readack(); // if ack:0
 i2c_stop();
 return (ack_data);
}