PYLD_CDMS

Dependencies:   mbed

Fork of PLYD_CDMS_1 by Siva ram

Committer:
Piasiv1206
Date:
Sun Nov 01 09:38:31 2015 +0000
Revision:
3:d2307fb2455c
Parent:
2:623747e75e3c
hello

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Piasiv1206 0:58ec354d3b79 1
Piasiv1206 0:58ec354d3b79 2
Piasiv1206 0:58ec354d3b79 3 // Payload uC (Tiva) -- > SPI master
Piasiv1206 0:58ec354d3b79 4 // CDMS uC (Freescale) --> SPI slave
Piasiv1206 0:58ec354d3b79 5 // packet length = 32*16 bits (32 bins --> each 2 bytes)
Piasiv1206 0:58ec354d3b79 6
Piasiv1206 0:58ec354d3b79 7 #include "mbed.h"
Piasiv1206 2:623747e75e3c 8 //int f;
Piasiv1206 0:58ec354d3b79 9 void FUNC_MASTER_WRITE(void);
Piasiv1206 0:58ec354d3b79 10 const int addr = 0x20<<1;
Piasiv1206 1:72227bdac415 11 const int addr1 = (0x20<<1|0);
Piasiv1206 3:d2307fb2455c 12 //Timer Siv ;
Piasiv1206 0:58ec354d3b79 13 I2C master (D14,D15);
Piasiv1206 0:58ec354d3b79 14 InterruptIn PYLD_I2C_Int(PTA13);
Piasiv1206 2:623747e75e3c 15 //DigitalIn test(PTA13);
Piasiv1206 0:58ec354d3b79 16 SPISlave device(PTD6, PTD7, PTD5,PTD4 ); // mosi, miso, sclk, ssel --> using SPI1
Piasiv1206 3:d2307fb2455c 17 //InterruptIn PYLD_SPI_Interrupt(PTD2);
Piasiv1206 2:623747e75e3c 18 DigitalOut flash(LED4);
Piasiv1206 2:623747e75e3c 19 int payloadBins = 3096;
Piasiv1206 0:58ec354d3b79 20 float Stability_delay = 0.005228 ;// 0.005228
Piasiv1206 0:58ec354d3b79 21
Piasiv1206 0:58ec354d3b79 22 Serial pc(USBTX, USBRX); // tx, rx --> serial feedback for debug
Piasiv1206 0:58ec354d3b79 23
Piasiv1206 0:58ec354d3b79 24 void payloadProcess() {
Piasiv1206 0:58ec354d3b79 25
Piasiv1206 0:58ec354d3b79 26
Piasiv1206 0:58ec354d3b79 27 //wait(Stability_delay); // wait after interrupt for stability
Piasiv1206 0:58ec354d3b79 28 unsigned short scienceRawPacket[payloadBins];
Piasiv1206 0:58ec354d3b79 29
Piasiv1206 0:58ec354d3b79 30 for(int i=0; i<payloadBins;i++){
Piasiv1206 0:58ec354d3b79 31
Piasiv1206 0:58ec354d3b79 32
Piasiv1206 0:58ec354d3b79 33
Piasiv1206 0:58ec354d3b79 34 while(!device.receive()); // blocking statement --> waiting for data from Payload
Piasiv1206 0:58ec354d3b79 35 scienceRawPacket[i] = device.read(); // Read byte from master
Piasiv1206 0:58ec354d3b79 36
Piasiv1206 0:58ec354d3b79 37 }
Piasiv1206 0:58ec354d3b79 38 // serial feedback
Piasiv1206 0:58ec354d3b79 39 pc.printf("Packet recieved\r\n");
Piasiv1206 0:58ec354d3b79 40 for(int i=0;i<payloadBins;i++){
Piasiv1206 0:58ec354d3b79 41 pc.printf("%d\t",scienceRawPacket[i]);
Piasiv1206 0:58ec354d3b79 42 scienceRawPacket[i] = 0;
Piasiv1206 0:58ec354d3b79 43 }
Piasiv1206 0:58ec354d3b79 44 pc.printf("\r\n");
Piasiv1206 0:58ec354d3b79 45
Piasiv1206 0:58ec354d3b79 46 }
Piasiv1206 3:d2307fb2455c 47 int dt3,pia = 0;
Piasiv1206 0:58ec354d3b79 48 bool f = 1;
Piasiv1206 2:623747e75e3c 49 char rdata[30],rdata2;
Piasiv1206 0:58ec354d3b79 50 void readds()
Piasiv1206 0:58ec354d3b79 51 {
Piasiv1206 0:58ec354d3b79 52
Piasiv1206 0:58ec354d3b79 53 //wait(Stability_delay);
Piasiv1206 2:623747e75e3c 54 flash = !flash;
Piasiv1206 2:623747e75e3c 55
Piasiv1206 0:58ec354d3b79 56
Piasiv1206 2:623747e75e3c 57
Piasiv1206 2:623747e75e3c 58 //while(!f)
Piasiv1206 2:623747e75e3c 59 //{
Piasiv1206 3:d2307fb2455c 60 // f= master.read(addr1,rdata,26);
Piasiv1206 2:623747e75e3c 61 //}
Piasiv1206 2:623747e75e3c 62 master.start();
Piasiv1206 3:d2307fb2455c 63 for(int i = 0;i<26;i++)
Piasiv1206 3:d2307fb2455c 64 {
Piasiv1206 3:d2307fb2455c 65
Piasiv1206 3:d2307fb2455c 66 master.write(addr1);
Piasiv1206 3:d2307fb2455c 67 rdata[i] = master.read(1);
Piasiv1206 2:623747e75e3c 68
Piasiv1206 3:d2307fb2455c 69 }
Piasiv1206 3:d2307fb2455c 70
Piasiv1206 3:d2307fb2455c 71 master.stop();
Piasiv1206 3:d2307fb2455c 72 /*
Piasiv1206 3:d2307fb2455c 73 for(pia = 0 ;pia<26;pia ++)
Piasiv1206 3:d2307fb2455c 74 {
Piasiv1206 3:d2307fb2455c 75 master.read(addr1,&rdata[pia],1);
Piasiv1206 3:d2307fb2455c 76 }
Piasiv1206 3:d2307fb2455c 77 */
Piasiv1206 0:58ec354d3b79 78 // dt3 = master.read(1);
Piasiv1206 0:58ec354d3b79 79
Piasiv1206 0:58ec354d3b79 80
Piasiv1206 0:58ec354d3b79 81 }
Piasiv1206 0:58ec354d3b79 82
Piasiv1206 0:58ec354d3b79 83 int loop=1;
Piasiv1206 0:58ec354d3b79 84 char *writedata = new char;
Piasiv1206 2:623747e75e3c 85 char data = 1,data1 = 2, data2 = 3, test[136] ;
Piasiv1206 2:623747e75e3c 86
Piasiv1206 0:58ec354d3b79 87
Piasiv1206 0:58ec354d3b79 88 void FUNC_MASTER_WRITE(void)
Piasiv1206 2:623747e75e3c 89 {
Piasiv1206 2:623747e75e3c 90
Piasiv1206 3:d2307fb2455c 91 for (dt3 = 0;dt3 <15 ; dt3++)
Piasiv1206 2:623747e75e3c 92 {
Piasiv1206 3:d2307fb2455c 93 test [dt3] = dt3 ;
Piasiv1206 2:623747e75e3c 94 }
Piasiv1206 2:623747e75e3c 95 int data5 = pc.getc();
Piasiv1206 0:58ec354d3b79 96 loop=1;
Piasiv1206 0:58ec354d3b79 97
Piasiv1206 0:58ec354d3b79 98
Piasiv1206 0:58ec354d3b79 99 master.frequency(100000);
Piasiv1206 1:72227bdac415 100 *writedata = data1;
Piasiv1206 0:58ec354d3b79 101 while(loop)
Piasiv1206 0:58ec354d3b79 102 {
Piasiv1206 2:623747e75e3c 103
Piasiv1206 3:d2307fb2455c 104 bool check = (bool)master.write(addr,test,13);
Piasiv1206 3:d2307fb2455c 105 // bool check = (bool)master.write(addr,&test[3],1,false);
Piasiv1206 3:d2307fb2455c 106 // check = (bool)master.write(addr,&test[4],1);
Piasiv1206 2:623747e75e3c 107
Piasiv1206 2:623747e75e3c 108 //wait_us(10);
Piasiv1206 2:623747e75e3c 109
Piasiv1206 2:623747e75e3c 110 //check = (bool)master.write(addr,&data1,1);
Piasiv1206 2:623747e75e3c 111 // check = (bool)master.write(addr,&data1,1);
Piasiv1206 2:623747e75e3c 112 //check = (bool)master.write(addr,&data2,1);
Piasiv1206 2:623747e75e3c 113 //bool check = master.write(addr,test,3);
Piasiv1206 2:623747e75e3c 114
Piasiv1206 2:623747e75e3c 115 // while(!test);
Piasiv1206 2:623747e75e3c 116
Piasiv1206 2:623747e75e3c 117 // readds();
Piasiv1206 3:d2307fb2455c 118 /*
Piasiv1206 3:d2307fb2455c 119 master.start();
Piasiv1206 3:d2307fb2455c 120 master.write(addr1);
Piasiv1206 3:d2307fb2455c 121
Piasiv1206 3:d2307fb2455c 122 for( pia = 0 ; pia<2 ; pia++)
Piasiv1206 3:d2307fb2455c 123 {
Piasiv1206 3:d2307fb2455c 124
Piasiv1206 3:d2307fb2455c 125 master.write(test[pia]);
Piasiv1206 3:d2307fb2455c 126 //wait_us(2);
Piasiv1206 3:d2307fb2455c 127
Piasiv1206 3:d2307fb2455c 128
Piasiv1206 3:d2307fb2455c 129 }
Piasiv1206 3:d2307fb2455c 130
Piasiv1206 3:d2307fb2455c 131
Piasiv1206 3:d2307fb2455c 132
Piasiv1206 3:d2307fb2455c 133
Piasiv1206 3:d2307fb2455c 134 for( pia = 2 ; pia<13 ; pia++)
Piasiv1206 3:d2307fb2455c 135 {
Piasiv1206 3:d2307fb2455c 136
Piasiv1206 3:d2307fb2455c 137 master.write(test[pia]);
Piasiv1206 3:d2307fb2455c 138 //wait_us(2);
Piasiv1206 3:d2307fb2455c 139
Piasiv1206 3:d2307fb2455c 140
Piasiv1206 3:d2307fb2455c 141 }
Piasiv1206 3:d2307fb2455c 142 master.stop();
Piasiv1206 3:d2307fb2455c 143
Piasiv1206 3:d2307fb2455c 144 */
Piasiv1206 3:d2307fb2455c 145 /*
Piasiv1206 3:d2307fb2455c 146 master.start();
Piasiv1206 3:d2307fb2455c 147 bool check1 = master.write(addr1);
Piasiv1206 2:623747e75e3c 148 // wait_us(10);
Piasiv1206 3:d2307fb2455c 149 bool check2 = master.write(1);
Piasiv1206 2:623747e75e3c 150 //wait_us(10);
Piasiv1206 3:d2307fb2455c 151 check2 = master.write(2);
Piasiv1206 3:d2307fb2455c 152 master.write(3);
Piasiv1206 3:d2307fb2455c 153 master.write(4);
Piasiv1206 3:d2307fb2455c 154 master.write(5);
Piasiv1206 3:d2307fb2455c 155 master.write(6);
Piasiv1206 3:d2307fb2455c 156 master.write(7);
Piasiv1206 2:623747e75e3c 157 //wait_us(10);
Piasiv1206 3:d2307fb2455c 158 master.write(8);
Piasiv1206 3:d2307fb2455c 159 master.write(9);
Piasiv1206 3:d2307fb2455c 160 master.write(10);
Piasiv1206 3:d2307fb2455c 161 master.write(11);
Piasiv1206 3:d2307fb2455c 162 master.write(12);
Piasiv1206 3:d2307fb2455c 163 master.write(13);
Piasiv1206 2:623747e75e3c 164
Piasiv1206 3:d2307fb2455c 165 master.stop();
Piasiv1206 2:623747e75e3c 166
Piasiv1206 3:d2307fb2455c 167 */
Piasiv1206 1:72227bdac415 168
Piasiv1206 0:58ec354d3b79 169
Piasiv1206 0:58ec354d3b79 170 loop = 0;
Piasiv1206 0:58ec354d3b79 171 }
Piasiv1206 0:58ec354d3b79 172 }
Piasiv1206 2:623747e75e3c 173
Piasiv1206 0:58ec354d3b79 174 int main() {
Piasiv1206 2:623747e75e3c 175 int dt1 = 0,dt2 = 0 ,P= 0;
Piasiv1206 3:d2307fb2455c 176 //device.format(16,0); // SPI format --> 16 bits, mode = 0
Piasiv1206 3:d2307fb2455c 177 //device.frequency(1000000);
Piasiv1206 3:d2307fb2455c 178 master.frequency(400000);
Piasiv1206 0:58ec354d3b79 179
Piasiv1206 0:58ec354d3b79 180 pc.printf("Example code demonstarting Payload - CDMS SPI & I2C communication!\r\n");
Piasiv1206 3:d2307fb2455c 181 //PYLD_SPI_Interrupt.rise(&payloadProcess);
Piasiv1206 0:58ec354d3b79 182 PYLD_I2C_Int.rise(&readds);
Piasiv1206 0:58ec354d3b79 183
Piasiv1206 0:58ec354d3b79 184 while(1)
Piasiv1206 0:58ec354d3b79 185 {
Piasiv1206 0:58ec354d3b79 186 FUNC_MASTER_WRITE();
Piasiv1206 0:58ec354d3b79 187 wait(1);
Piasiv1206 2:623747e75e3c 188 //dt1 = rdata[0] ;
Piasiv1206 2:623747e75e3c 189 //dt2 = rdata[1] ;
Piasiv1206 2:623747e75e3c 190 for(P = 0 ; P < 26 ; P++ )
Piasiv1206 2:623747e75e3c 191 {
Piasiv1206 2:623747e75e3c 192 pc.printf("Temperature %d \n\r",rdata[P]);
Piasiv1206 2:623747e75e3c 193 }
Piasiv1206 2:623747e75e3c 194 // pc.printf("Temperature %d \n\r",dt1);
Piasiv1206 2:623747e75e3c 195 // pc.printf("Temperature2 %d \n\r",dt2);
Piasiv1206 0:58ec354d3b79 196 //pc.printf("Temperature3 %d \n\r",dt3);
Piasiv1206 0:58ec354d3b79 197
Piasiv1206 0:58ec354d3b79 198
Piasiv1206 0:58ec354d3b79 199 }
Piasiv1206 0:58ec354d3b79 200 }