
Gifu Valve Driver
Dependencies: BitAccess GVD mbed
main.cpp@0:0a51d4f7c853, 2016-08-04 (annotated)
- Committer:
- moneneholic
- Date:
- Thu Aug 04 00:47:15 2016 +0000
- Revision:
- 0:0a51d4f7c853
FirstVer
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
moneneholic | 0:0a51d4f7c853 | 1 | #include "mbed.h" |
moneneholic | 0:0a51d4f7c853 | 2 | #include "GVD.hpp" |
moneneholic | 0:0a51d4f7c853 | 3 | #include "BitAccess.h" |
moneneholic | 0:0a51d4f7c853 | 4 | |
moneneholic | 0:0a51d4f7c853 | 5 | char read_address() { |
moneneholic | 0:0a51d4f7c853 | 6 | const size_t din_num = 4; |
moneneholic | 0:0a51d4f7c853 | 7 | DigitalIn din[] = { |
moneneholic | 0:0a51d4f7c853 | 8 | DigitalIn(dp26), |
moneneholic | 0:0a51d4f7c853 | 9 | DigitalIn(dp25), |
moneneholic | 0:0a51d4f7c853 | 10 | DigitalIn(dp18), |
moneneholic | 0:0a51d4f7c853 | 11 | DigitalIn(dp17) |
moneneholic | 0:0a51d4f7c853 | 12 | }; |
moneneholic | 0:0a51d4f7c853 | 13 | |
moneneholic | 0:0a51d4f7c853 | 14 | char address = 0; |
moneneholic | 0:0a51d4f7c853 | 15 | size_t address_offset = 0x08 << 1; |
moneneholic | 0:0a51d4f7c853 | 16 | for (size_t i = 0; i < din_num; ++i) { |
moneneholic | 0:0a51d4f7c853 | 17 | address |= din[i].read() << (i + 1); |
moneneholic | 0:0a51d4f7c853 | 18 | } |
moneneholic | 0:0a51d4f7c853 | 19 | return address + address_offset; |
moneneholic | 0:0a51d4f7c853 | 20 | } |
moneneholic | 0:0a51d4f7c853 | 21 | |
moneneholic | 0:0a51d4f7c853 | 22 | int main(){ |
moneneholic | 0:0a51d4f7c853 | 23 | I2CSlave i2c(dp5, dp27); |
moneneholic | 0:0a51d4f7c853 | 24 | i2c.address(read_address()); |
moneneholic | 0:0a51d4f7c853 | 25 | GVD vd(dp11,dp2,dp9,dp6,dp4,dp10,dp1,dp13); |
moneneholic | 0:0a51d4f7c853 | 26 | BitAccess byte; |
moneneholic | 0:0a51d4f7c853 | 27 | while (true){ |
moneneholic | 0:0a51d4f7c853 | 28 | char buf; |
moneneholic | 0:0a51d4f7c853 | 29 | switch (i2c.receive()){ |
moneneholic | 0:0a51d4f7c853 | 30 | case I2CSlave::ReadAddressed: |
moneneholic | 0:0a51d4f7c853 | 31 | break; |
moneneholic | 0:0a51d4f7c853 | 32 | case I2CSlave::WriteGeneral: |
moneneholic | 0:0a51d4f7c853 | 33 | break; |
moneneholic | 0:0a51d4f7c853 | 34 | case I2CSlave::WriteAddressed: |
moneneholic | 0:0a51d4f7c853 | 35 | i2c.read(&buf, 1); |
moneneholic | 0:0a51d4f7c853 | 36 | byte.setByte(buf); |
moneneholic | 0:0a51d4f7c853 | 37 | vd.write(byte.b0,byte.b1,byte.b2,byte.b3,byte.b4,byte.b5,byte.b6,byte.b7); |
moneneholic | 0:0a51d4f7c853 | 38 | break; |
moneneholic | 0:0a51d4f7c853 | 39 | case I2CSlave::NoData: |
moneneholic | 0:0a51d4f7c853 | 40 | break; |
moneneholic | 0:0a51d4f7c853 | 41 | } |
moneneholic | 0:0a51d4f7c853 | 42 | } |
moneneholic | 0:0a51d4f7c853 | 43 | } |