Pradeep Kotipalli
/
TFOX_CDMS_VR_1_0_WORKING
jnlj
Fork of TFOX_CDMS_VR_1_0_WORKING by
Embed:
(wiki syntax)
Show/hide line numbers
i2c.cpp
00001 #include "mbed.h" 00002 //#include "pin_config.h" 00003 #include "i2c.h" 00004 00005 Serial gc(USBTX,USBRX); 00006 InterruptIn irpt_4m_slv(D9); //I2c interrupt from CDMS 00007 DigitalOut irpt_2_slv(D8); //I2C interrupt to CDMS 00008 I2C master(D14,D15); 00009 00010 00011 00012 const int addr = 0x20; //slave address 00013 Timer t; 00014 00015 00016 void FCTN_I2C_READ(char *data, int length ) 00017 { 00018 bool read_ack = true; 00019 irpt_2_slv = 0; 00020 t.start(); 00021 read_ack=master.read(addr|1,data,length); 00022 t.stop(); 00023 if(read_ack == 0) 00024 printf("\r\n\rData received from BAE is %s \r\n",data); 00025 else 00026 { 00027 printf("\r\n \r data not received \r\n"); 00028 master.stop(); 00029 } 00030 irpt_2_slv = 1; 00031 printf("\r\n\r %d \r\n",t.read_us()); 00032 t.reset(); 00033 } 00034 00035 void FCTN_I2C_WRITE(char *data,int length) 00036 { 00037 bool write_ack = true; 00038 irpt_2_slv = 0; 00039 t.start(); 00040 write_ack=master.write(addr|0x00,data,length); 00041 t.stop(); 00042 if(write_ack == 0) 00043 printf("\r\n\rData sent to BAE is %s \r\n",data); 00044 else 00045 { 00046 printf("\r\n\r data not sent \r\n"); 00047 master.stop(); 00048 } 00049 irpt_2_slv = 1; 00050 printf("\r\n\r %d \r\n",t.read_us()); 00051 t.reset(); 00052 } 00053 00054 bool check = 1; 00055 void FCTN_MASTER_I2C(char i2c_data_type , char* i2c_data) 00056 { 00057 FCTN_I2C_WRITE(&i2c_data_type,1); 00058 wait_ms(10); 00059 switch(i2c_data_type) 00060 { 00061 case 's': 00062 FCTN_I2C_WRITE(i2c_data,11); 00063 break; 00064 00065 case 'l': 00066 FCTN_I2C_WRITE(i2c_data,135); 00067 break; 00068 00069 case 'h': 00070 FCTN_I2C_READ(i2c_data,25); 00071 break; 00072 00073 default: 00074 printf("\r\n\r invalid command \r\n"); 00075 } 00076 }
Generated on Fri Jul 15 2022 14:57:04 by 1.7.2