I2C拡張ライブラリー
概要
I2CのサポートはXC8のライブラリに含まれている。
ただし、STARTコンディションの発行が成功しデーター送受信途中にエラーが発生した場合、ストップコンディションを発行しなければデバイスを解放できない。
1byte送信のたびにエラー処理を行うのは煩雑なので、1byte書き込み関数にエラー時のストップコンディション発行を追加した。
使用する場合はi2c_ex.hをインクルードしi2c_ex.cをプロジェクトに追加してください。
I2Cバスの仕様については、次のページに記述がある。
http://www.nxp.com/documents/user_manual/UM10204_JA.pdf
プログラムの説明
ソースファイル
以下のファイルで構成されている
i2c_ex.c ・・・ I2C 拡張ライブラリー Version 1.00
i2c_ex.h ・・・ I2C 拡張ライブラリー Version 1.00
サブルーチン
以下のサブルーチンをサポート
i2c_write
スレーブへ1byte書き込む。エラー発生時はSTOPコンディションを発行する
ソースコード
i2c_ex.h
#ifndef I2C_EX_H
#define I2C_EX_H
signed char i2c_write(unsigned char d);
#define TRY 2
#endif
i2c_ex.c
#include <p18f14k50.h>
#include <plib\delays.h>
#include <plib\i2c.h>
#include "i2c_ex.h"
signed char i2c_write(unsigned char d){
signed char ret;
ret=WriteI2C(d);
if(ret){
SSPCON1bits.WCOL=0;
StopI2C();
while(SSPCON2bits.PEN);
return ret;
}
IdleI2C();
return 0;
}