Gifu Valve Driver

Dependencies:   BitAccess GVD mbed

Committer:
moneneholic
Date:
Thu Aug 04 00:47:15 2016 +0000
Revision:
0:0a51d4f7c853
FirstVer

Who changed what in which revision?

UserRevisionLine numberNew 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 }