cdms_update

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of CDMS_SD_MNG_OVERDRIVE by saikiran cholleti

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers i2c.cpp Source File

i2c.cpp

00001 #include "mbed.h"
00002 #include "pinconfig.h"
00003 #include "rtos.h"
00004 #include "i2c.h"
00005 
00006 DigitalOut irpt_2_slv(PIN67);                                        //I2C interrupt to CDMS
00007 I2C master(PIN32,PIN31);
00008 DigitalOut led1(PIN46);
00009 DigitalOut led2(PIN95);
00010 const int addr = 0x20;                                            //slave address 
00011 char telecommand[tc_len];
00012 char telemetry[tm_len];
00013 Timer test;
00014 Timer t_read;
00015 bool write_ack = true;
00016 bool read_ack = true;
00017 
00018 int count = 0;
00019 
00020 void FCTN_I2C_WRITE(char *data)
00021 {
00022     irpt_2_slv = 1;
00023     //t.start();
00024     write_ack = master.write(addr|0x00,data,tc_len);
00025     //t.stop();
00026     //if(write_ack == 0)
00027         //pc.printf("\n\r data not sent \n");
00028        
00029 if (write_ack == 1)
00030     {
00031         led2 = 1;
00032         printf("\n\r data not sent \n");
00033         led2 = 0;    
00034     }
00035     irpt_2_slv = 0;
00036     //pc.printf("\n\r %d \n",t.read_us());
00037     //t.reset();
00038 }
00039 
00040 
00041 void FCTN_I2C_READ(char *data,int length)
00042 {
00043     irpt_2_slv = 1; 
00044     t_read.start();
00045     read_ack = master.read(addr|1,data,length);
00046     t_read.stop();
00047    
00048     //if(read_ack == 0)
00049       //  printf("\n\rData received from BAE %s \n",data);
00050  if (read_ack == 1)
00051     {
00052         led2 = 1;
00053         printf("\n \r data not received \n");
00054         led2 = 0;
00055     }
00056 //if(read_ack == 1)
00057 //pc.printf("\n \r data not received \n");
00058 
00059     irpt_2_slv = 0;
00060     //printf("\n\r %d \n",t.read_us());
00061     //t.reset();
00062 }