i2cslave class without interrupt process
i2cslave.cpp@0:2976149f5c28, 2017-02-26 (annotated)
- 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?
User | Revision | Line number | New 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 |