i2cslave class without interrupt process

Committer:
sgrsn
Date:
Sun Feb 26 07:04:56 2017 +0000
Revision:
0:2976149f5c28
i2cslave class without interrupt process 2017/2/26

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sgrsn 0:2976149f5c28 1 #include "i2cslave.h"
sgrsn 0:2976149f5c28 2
sgrsn 0:2976149f5c28 3 i2cslave::i2cslave(PinName sda, PinName scl, char *Registar) : I2CSlave(sda, scl)
sgrsn 0:2976149f5c28 4 {
sgrsn 0:2976149f5c28 5 _Registar = Registar;
sgrsn 0:2976149f5c28 6 frequency(400000);
sgrsn 0:2976149f5c28 7 }
sgrsn 0:2976149f5c28 8
sgrsn 0:2976149f5c28 9 void i2cslave::communication()
sgrsn 0:2976149f5c28 10 {
sgrsn 0:2976149f5c28 11 switch(receive())
sgrsn 0:2976149f5c28 12 {
sgrsn 0:2976149f5c28 13 case I2CSlave::NoData: //データなし
sgrsn 0:2976149f5c28 14 break;
sgrsn 0:2976149f5c28 15 case I2CSlave::ReadAddressed: //マスターからのデータ送信要求
sgrsn 0:2976149f5c28 16 break;
sgrsn 0:2976149f5c28 17 case I2CSlave::WriteAddressed: //マスターからデータを受信
sgrsn 0:2976149f5c28 18 geti2c();
sgrsn 0:2976149f5c28 19 break;
sgrsn 0:2976149f5c28 20 case I2CSlave::WriteGeneral: //マスターからデータを受信(全スレーブ宛)
sgrsn 0:2976149f5c28 21 break;
sgrsn 0:2976149f5c28 22 }
sgrsn 0:2976149f5c28 23 }
sgrsn 0:2976149f5c28 24 void i2cslave::geti2c()
sgrsn 0:2976149f5c28 25 {
sgrsn 0:2976149f5c28 26 char i2cData[3] = {};
sgrsn 0:2976149f5c28 27 read(i2cData, 3);
sgrsn 0:2976149f5c28 28 wait_us(30);
sgrsn 0:2976149f5c28 29 switch(i2cData[2])
sgrsn 0:2976149f5c28 30 {
sgrsn 0:2976149f5c28 31 case SendData:
sgrsn 0:2976149f5c28 32 read(_Registar + i2cData[1], i2cData[0]);
sgrsn 0:2976149f5c28 33 break;
sgrsn 0:2976149f5c28 34 case RequestData:
sgrsn 0:2976149f5c28 35 write(_Registar + i2cData[1], i2cData[0]);
sgrsn 0:2976149f5c28 36 break;
sgrsn 0:2976149f5c28 37 }
sgrsn 0:2976149f5c28 38 }
sgrsn 0:2976149f5c28 39