not workin

Dependencies:   mbed-rtos mbed

Fork of BAE_FRDM_INTEGRATION by green rosh

Committer:
sakthipriya
Date:
Tue Dec 16 11:37:09 2014 +0000
Revision:
9:6bcc165ee457
Parent:
8:667fbc82d634
i2c not workin new integ.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
greenroshks 8:667fbc82d634 1 /*******************Below is an old version**********************************************************************************************/
sakthipriya 3:02b45de29c0f 2 /* Added fault to hk structure and being sent through I2C. Need to verify the format */
greenroshks 8:667fbc82d634 3 /*#include "slave.h"
greenroshks 0:8b0d43fe6c05 4 #include "HK.h"
greenroshks 0:8b0d43fe6c05 5
greenroshks 0:8b0d43fe6c05 6 extern struct SensorData Sensor;
greenroshks 1:b4bb78a9b92e 7 I2CSlave slave(PTC9,PTC8); //configuring pins p27, p28 as I2Cslave
greenroshks 0:8b0d43fe6c05 8 Serial screen (USBTX,USBRX);
greenroshks 0:8b0d43fe6c05 9 void write_to_master(char send) //function to write data to master
greenroshks 0:8b0d43fe6c05 10 {
greenroshks 0:8b0d43fe6c05 11 int acknowledge;
greenroshks 0:8b0d43fe6c05 12 int loopvariable4=1;
greenroshks 0:8b0d43fe6c05 13 while(loopvariable4)
greenroshks 0:8b0d43fe6c05 14 {
greenroshks 0:8b0d43fe6c05 15 acknowledge = slave.write(send); //sending the byte to master
greenroshks 0:8b0d43fe6c05 16 if(acknowledge==1)
greenroshks 0:8b0d43fe6c05 17 {
greenroshks 0:8b0d43fe6c05 18 screen.printf(" acknowledge %d sent %u \n",acknowledge,send);
greenroshks 0:8b0d43fe6c05 19 loopvariable4=0;
greenroshks 0:8b0d43fe6c05 20 }
greenroshks 0:8b0d43fe6c05 21 }
greenroshks 0:8b0d43fe6c05 22 }
greenroshks 0:8b0d43fe6c05 23
greenroshks 0:8b0d43fe6c05 24
greenroshks 0:8b0d43fe6c05 25
greenroshks 0:8b0d43fe6c05 26
greenroshks 0:8b0d43fe6c05 27 void FUNC_I2C_SLAVE_MAIN(int iterations)
greenroshks 0:8b0d43fe6c05 28 {
greenroshks 0:8b0d43fe6c05 29
greenroshks 0:8b0d43fe6c05 30 screen.printf("\nSlave entered\n");
greenroshks 0:8b0d43fe6c05 31 slave.address(slave_address); //assigning slave address
greenroshks 0:8b0d43fe6c05 32 slave.stop();
greenroshks 0:8b0d43fe6c05 33 char Switch_Variable;
greenroshks 0:8b0d43fe6c05 34
greenroshks 0:8b0d43fe6c05 35
greenroshks 0:8b0d43fe6c05 36 int loopvariable1=1;
greenroshks 0:8b0d43fe6c05 37 int loopvariable2=0;
greenroshks 0:8b0d43fe6c05 38 int loopvariable3=1;
greenroshks 0:8b0d43fe6c05 39 //initialising dummy sensor data
greenroshks 0:8b0d43fe6c05 40
greenroshks 0:8b0d43fe6c05 41 while(loopvariable1)
greenroshks 0:8b0d43fe6c05 42 {
greenroshks 0:8b0d43fe6c05 43 //to read data from master
greenroshks 0:8b0d43fe6c05 44 if(slave.receive()==WriteGeneral) //checking if slave is addressed to write
greenroshks 0:8b0d43fe6c05 45 {
greenroshks 1:b4bb78a9b92e 46 slave.stop();
greenroshks 0:8b0d43fe6c05 47 Switch_Variable=slave.read(); //receiving data
greenroshks 0:8b0d43fe6c05 48 screen.printf("switch variable=%d\n",Switch_Variable);
greenroshks 0:8b0d43fe6c05 49 slave.stop(); //reset slave to default receiving state
greenroshks 0:8b0d43fe6c05 50 loopvariable1=0;
greenroshks 0:8b0d43fe6c05 51 //to interpret and write data to master
greenroshks 0:8b0d43fe6c05 52 switch(Switch_Variable)
greenroshks 0:8b0d43fe6c05 53 {
greenroshks 0:8b0d43fe6c05 54
greenroshks 0:8b0d43fe6c05 55
greenroshks 0:8b0d43fe6c05 56 case 1: printf("\nEntered switch\n");
greenroshks 0:8b0d43fe6c05 57 while(loopvariable3)
greenroshks 0:8b0d43fe6c05 58 {
greenroshks 0:8b0d43fe6c05 59 if(slave.receive()==ReadAddressed) //check if slave is addressed to read
greenroshks 0:8b0d43fe6c05 60 {
greenroshks 0:8b0d43fe6c05 61 while(loopvariable2<iterations)
greenroshks 0:8b0d43fe6c05 62 {
greenroshks 0:8b0d43fe6c05 63 if(loopvariable2%3==0)
greenroshks 0:8b0d43fe6c05 64 {
greenroshks 0:8b0d43fe6c05 65 screen.printf("\nvoltage%d\n",loopvariable2/3);
greenroshks 0:8b0d43fe6c05 66 write_to_master(Sensor.Voltage[loopvariable2/3]);
greenroshks 0:8b0d43fe6c05 67 }
greenroshks 0:8b0d43fe6c05 68 else if(loopvariable2%3==1)
greenroshks 0:8b0d43fe6c05 69 {
greenroshks 0:8b0d43fe6c05 70 screen.printf("\ncurrent%d\n",loopvariable2/3);
greenroshks 0:8b0d43fe6c05 71 write_to_master(Sensor.Current[loopvariable2/3]);
greenroshks 0:8b0d43fe6c05 72 }
greenroshks 0:8b0d43fe6c05 73 else if(loopvariable2%3==2)
greenroshks 0:8b0d43fe6c05 74 {
greenroshks 0:8b0d43fe6c05 75 screen.printf("\ntemp%d\n",loopvariable2/3);
greenroshks 0:8b0d43fe6c05 76 write_to_master(Sensor.Temperature[loopvariable2/3]);
greenroshks 0:8b0d43fe6c05 77 }
greenroshks 0:8b0d43fe6c05 78 loopvariable2++;
sakthipriya 3:02b45de29c0f 79 }
raizel_varun 7:f06840d848e3 80 screen.printf("\nfault %c\n",Sensor.faultpoll);
raizel_varun 7:f06840d848e3 81 write_to_master(Sensor.faultpoll);
raizel_varun 7:f06840d848e3 82 screen.printf("\nfault %c\n",Sensor.faultir);
raizel_varun 7:f06840d848e3 83 write_to_master(Sensor.faultir);
sakthipriya 5:255b43e8e21a 84 screen.printf("\npower mode %c\n",Sensor.power_mode);
sakthipriya 5:255b43e8e21a 85 write_to_master(Sensor.power_mode);
greenroshks 0:8b0d43fe6c05 86 printf("\nExited i2c while loop\n");
greenroshks 0:8b0d43fe6c05 87 slave.stop();
greenroshks 0:8b0d43fe6c05 88 loopvariable3=0;
greenroshks 0:8b0d43fe6c05 89 }//if(read addressed)
greenroshks 0:8b0d43fe6c05 90
greenroshks 0:8b0d43fe6c05 91 }//while(loopvariable3)
greenroshks 0:8b0d43fe6c05 92
greenroshks 0:8b0d43fe6c05 93 break;
greenroshks 0:8b0d43fe6c05 94 case 2 : screen.printf(" telecommand 2\n");
greenroshks 0:8b0d43fe6c05 95 break;
greenroshks 0:8b0d43fe6c05 96
greenroshks 0:8b0d43fe6c05 97 }//switch case ends
greenroshks 0:8b0d43fe6c05 98 }
greenroshks 0:8b0d43fe6c05 99 }
greenroshks 0:8b0d43fe6c05 100 screen.printf("\nexited slave function\n");
greenroshks 0:8b0d43fe6c05 101 }
greenroshks 8:667fbc82d634 102 */
greenroshks 8:667fbc82d634 103
greenroshks 8:667fbc82d634 104 //******************The following is a new version********************************************************************************/
greenroshks 8:667fbc82d634 105 #include "HK.h"
greenroshks 8:667fbc82d634 106 #include "slave.h"
greenroshks 8:667fbc82d634 107
greenroshks 8:667fbc82d634 108
greenroshks 8:667fbc82d634 109
greenroshks 8:667fbc82d634 110 I2CSlave slave(D14,D15); //configuring pins p27, p28 as I2Cslave
greenroshks 8:667fbc82d634 111 Serial pc_slave (USBTX,USBRX);
greenroshks 8:667fbc82d634 112 //InterruptIn interrupt(D9); //This should be in the main
greenroshks 8:667fbc82d634 113 //DigitalOut data_ready(D10); //Again in the main function
greenroshks 8:667fbc82d634 114 //int i2c_status=0; //read/write mode for i2c 0 : write2slave, 1 : write2master (Again in tha main)
greenroshks 8:667fbc82d634 115
sakthipriya 9:6bcc165ee457 116
greenroshks 8:667fbc82d634 117
greenroshks 8:667fbc82d634 118 //Mail<i2c_data,16> i2c_data_receive; To be done in the main
greenroshks 8:667fbc82d634 119 //Mail<i2c_data,16> i2c_data_send; To be done in the main
greenroshks 8:667fbc82d634 120
sakthipriya 9:6bcc165ee457 121 void FUNC_I2C_WRITE2CDMS(char *data, int length)
greenroshks 8:667fbc82d634 122 {
greenroshks 8:667fbc82d634 123
greenroshks 8:667fbc82d634 124 int slave_status = 1;
greenroshks 8:667fbc82d634 125 while(slave_status)
greenroshks 8:667fbc82d634 126 {
greenroshks 8:667fbc82d634 127 slave.address(0x20);
greenroshks 8:667fbc82d634 128 if(slave.receive()==1)
greenroshks 8:667fbc82d634 129 {
greenroshks 8:667fbc82d634 130 slave_status=slave.write(data,length);
greenroshks 8:667fbc82d634 131 // printf("\n In the while loop\n");
greenroshks 8:667fbc82d634 132
greenroshks 8:667fbc82d634 133 /*if(!slave_status)
greenroshks 8:667fbc82d634 134 {
greenroshks 8:667fbc82d634 135 printf("slave wrote %c to master\n\r",*data);
greenroshks 8:667fbc82d634 136
greenroshks 8:667fbc82d634 137 }*/
greenroshks 8:667fbc82d634 138
greenroshks 8:667fbc82d634 139 }
greenroshks 8:667fbc82d634 140 else
greenroshks 8:667fbc82d634 141 if(slave.receive()==3 || slave.receive()==2)
greenroshks 8:667fbc82d634 142 {
greenroshks 8:667fbc82d634 143 //i2c_data *i2c_data_r = i2c_data_receive.alloc();
greenroshks 8:667fbc82d634 144 slave_status=slave.read(data,length);
greenroshks 8:667fbc82d634 145 /*if(!slave_status)
greenroshks 8:667fbc82d634 146 {
greenroshks 8:667fbc82d634 147 printf("1 read %c from master\n\r",*data);
greenroshks 8:667fbc82d634 148 }*/
greenroshks 8:667fbc82d634 149 }
greenroshks 8:667fbc82d634 150 //slave.stop();
greenroshks 8:667fbc82d634 151 }
greenroshks 8:667fbc82d634 152 printf("2 done");
greenroshks 8:667fbc82d634 153
greenroshks 8:667fbc82d634 154 }
greenroshks 8:667fbc82d634 155
greenroshks 8:667fbc82d634 156
sakthipriya 9:6bcc165ee457 157
greenroshks 8:667fbc82d634 158
greenroshks 8:667fbc82d634 159
greenroshks 8:667fbc82d634 160
sakthipriya 9:6bcc165ee457 161
greenroshks 8:667fbc82d634 162 /* i2c_data * i2c_data_s = i2c_data_send.alloc();
greenroshks 8:667fbc82d634 163 i2c_data_s->data = data;
greenroshks 8:667fbc82d634 164 i2c_data_s->length = 1;
greenroshks 8:667fbc82d634 165 i2c_data_send.put(i2c_data_s);
greenroshks 8:667fbc82d634 166 //data_ready=1;
greenroshks 8:667fbc82d634 167 i2c_status=1;*/
greenroshks 8:667fbc82d634 168 // while(1)
greenroshks 8:667fbc82d634 169 //{
greenroshks 8:667fbc82d634 170 //*(data_send)=pc.getc();
greenroshks 8:667fbc82d634 171
greenroshks 8:667fbc82d634 172 //FUNC_I2C_WRITE2CDMS(&data,1);
greenroshks 8:667fbc82d634 173 //printf("\n The data send or received by slave is %c\n",data);
greenroshks 8:667fbc82d634 174 //(data)++;
greenroshks 8:667fbc82d634 175 //wait(1);
greenroshks 8:667fbc82d634 176 //Remove the comments for receiving data
greenroshks 8:667fbc82d634 177 /* osEvent evt = i2c_data_receive.get();
greenroshks 8:667fbc82d634 178 if (evt.status == osEventMail)
greenroshks 8:667fbc82d634 179 {
greenroshks 8:667fbc82d634 180 i2c_data *i2c_data_r = (i2c_data*)evt.value.p;
greenroshks 8:667fbc82d634 181 printf("\nData read from CDMS is %c\n",i2c_data_r->data);
greenroshks 8:667fbc82d634 182
greenroshks 8:667fbc82d634 183 i2c_data_receive.free(i2c_data_r);
greenroshks 8:667fbc82d634 184 //delete i2c_data_r;
greenroshks 8:667fbc82d634 185 }*/
greenroshks 8:667fbc82d634 186 /* //put in comments for receiving data
greenroshks 8:667fbc82d634 187 data_ready=0;
greenroshks 8:667fbc82d634 188 data = pc.getc();
greenroshks 8:667fbc82d634 189 i2c_data * i2c_data_s = i2c_data_send.alloc();
greenroshks 8:667fbc82d634 190 i2c_data_s->data = data;
greenroshks 8:667fbc82d634 191 i2c_data_s->length = 1;
greenroshks 8:667fbc82d634 192 i2c_data_send.put(i2c_data_s);
greenroshks 8:667fbc82d634 193 data_ready=1;
greenroshks 8:667fbc82d634 194 i2c_status=1;
greenroshks 8:667fbc82d634 195
greenroshks 8:667fbc82d634 196 }
greenroshks 8:667fbc82d634 197 }
greenroshks 8:667fbc82d634 198 */
greenroshks 8:667fbc82d634 199
greenroshks 8:667fbc82d634 200 //To be done in the main