TestRadar, dont know if wroks

Dependencies:   mbed

Fork of MainMitFreq by Rotorhead

Committer:
abuitrag
Date:
Fri Jun 27 00:08:45 2014 +0000
Revision:
4:7ce2cdd04dd8
Parent:
MainWithFreq.cpp@3:c9341431a333
threw something together really late; maybe it works? dunno;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abuitrag 0:b738b4b05ed8 1 #include "mbed.h"
dahooz 2:7900c18cebd5 2
abuitrag 0:b738b4b05ed8 3 SPI spiR(p11, p12, p13); // mosi, miso, sclk
abuitrag 0:b738b4b05ed8 4 DigitalOut lpR(p10);
abuitrag 0:b738b4b05ed8 5 DigitalOut bpR(p14);
dahooz 2:7900c18cebd5 6
abuitrag 0:b738b4b05ed8 7 SPI spiL(p5, p6, p7);
abuitrag 0:b738b4b05ed8 8 DigitalOut lpL(p8);
abuitrag 0:b738b4b05ed8 9 DigitalOut bpL(p9);
dahooz 2:7900c18cebd5 10
abuitrag 0:b738b4b05ed8 11 void latch()
abuitrag 0:b738b4b05ed8 12 {
abuitrag 0:b738b4b05ed8 13 lpR = 1;
abuitrag 0:b738b4b05ed8 14 lpL = 1;
abuitrag 0:b738b4b05ed8 15 lpR = 1;
abuitrag 0:b738b4b05ed8 16 lpL = 1;
abuitrag 0:b738b4b05ed8 17 lpR = 1;
abuitrag 0:b738b4b05ed8 18 lpL = 1;
abuitrag 0:b738b4b05ed8 19 lpR = 0;
abuitrag 0:b738b4b05ed8 20 lpL = 0;
abuitrag 0:b738b4b05ed8 21 }
dahooz 2:7900c18cebd5 22
abuitrag 0:b738b4b05ed8 23
dahooz 2:7900c18cebd5 24
dahooz 2:7900c18cebd5 25 //FREQ CONTROL CONFIG
abuitrag 0:b738b4b05ed8 26
abuitrag 0:b738b4b05ed8 27 Ticker tick;
abuitrag 0:b738b4b05ed8 28 InterruptIn in(p22);
abuitrag 0:b738b4b05ed8 29 Timer t1;
abuitrag 0:b738b4b05ed8 30 Timer t2;
abuitrag 0:b738b4b05ed8 31
abuitrag 0:b738b4b05ed8 32 //INTERRUPT FEEDBACK LED
abuitrag 4:7ce2cdd04dd8 33
abuitrag 0:b738b4b05ed8 34 DigitalOut led(LED1);
dahooz 2:7900c18cebd5 35 DigitalOut led2(LED2);
dahooz 2:7900c18cebd5 36 DigitalOut led3(LED3);
dahooz 2:7900c18cebd5 37 DigitalOut led4(LED4);
abuitrag 0:b738b4b05ed8 38
abuitrag 0:b738b4b05ed8 39 //RUNTIME VARS
abuitrag 0:b738b4b05ed8 40
dahooz 2:7900c18cebd5 41 float t_period = 0; // This is the period between interrupts in microseconds
abuitrag 0:b738b4b05ed8 42 float t_freq = 0;
abuitrag 0:b738b4b05ed8 43 int last = -1;
dahooz 2:7900c18cebd5 44 float curt = 0;
dahooz 2:7900c18cebd5 45 int f = 0;
abuitrag 0:b738b4b05ed8 46
abuitrag 0:b738b4b05ed8 47 //DUMMY FUNCTION AS THERE IS NO HEADER FILE
abuitrag 0:b738b4b05ed8 48
abuitrag 0:b738b4b05ed8 49 void flip();
abuitrag 0:b738b4b05ed8 50 void flip()
abuitrag 0:b738b4b05ed8 51 {
abuitrag 0:b738b4b05ed8 52 t_period = t1.read_us(); // Get time since last interrupt
abuitrag 0:b738b4b05ed8 53 t_freq = (1/(float)t_period)*1000000; // Convert period (in us) to frequency (Hz)
abuitrag 0:b738b4b05ed8 54 t1.reset(); // Reset timer and wait for next interrupt
abuitrag 0:b738b4b05ed8 55 t2.reset();
abuitrag 0:b738b4b05ed8 56 led = !led;
dahooz 2:7900c18cebd5 57 f++;
dahooz 2:7900c18cebd5 58 }
dahooz 2:7900c18cebd5 59
dahooz 2:7900c18cebd5 60
dahooz 2:7900c18cebd5 61
dahooz 2:7900c18cebd5 62 short radaroff[24]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
dahooz 2:7900c18cebd5 63 short radaron[24]= {0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,
dahooz 2:7900c18cebd5 64 0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF
dahooz 2:7900c18cebd5 65 };
dahooz 2:7900c18cebd5 66 short radardot[24]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0};
dahooz 2:7900c18cebd5 67
abuitrag 0:b738b4b05ed8 68 int lookupport(int j)
abuitrag 0:b738b4b05ed8 69 {
dahooz 2:7900c18cebd5 70 int led, p;
dahooz 2:7900c18cebd5 71
dahooz 2:7900c18cebd5 72 if(j%2 == 1) //Alle ungeradezahligen Ports
dahooz 2:7900c18cebd5 73 //werden vom rechten Controller angesteuert
dahooz 2:7900c18cebd5 74 //entsprechend wird "R" als "Side" zugewiesen
abuitrag 0:b738b4b05ed8 75 {
dahooz 2:7900c18cebd5 76
dahooz 2:7900c18cebd5 77 p = j/2; //Durch Division /2 bekommen wir eine "normierte Reihe" also (0,1 ,2 ... 12)
dahooz 2:7900c18cebd5 78
dahooz 2:7900c18cebd5 79 if (p%2 == 0) //nochmal %2 da Ports sich abwechseln (0, 23, 1, 22... siehe Tabelle)
dahooz 2:7900c18cebd5 80 led = 23 - (p/2); //also von "p" ausgegangen, beginnen gerade Zahlen von hinten an (Ports 23, 22, 21... 12)
dahooz 2:7900c18cebd5 81 else
dahooz 2:7900c18cebd5 82 led = (p/2); // ungerade Zahlen beginnen von vorne an (Port 0, 1, 2... 11)
abuitrag 0:b738b4b05ed8 83 }
dahooz 2:7900c18cebd5 84
dahooz 2:7900c18cebd5 85 else
dahooz 2:7900c18cebd5 86
dahooz 2:7900c18cebd5 87 {
abuitrag 0:b738b4b05ed8 88 p = (j-1)/2;
dahooz 2:7900c18cebd5 89
abuitrag 0:b738b4b05ed8 90 if (p%2 == 0)
dahooz 2:7900c18cebd5 91 led = 23 - (p/2);
abuitrag 0:b738b4b05ed8 92 else
dahooz 2:7900c18cebd5 93 led = (p/2);
dahooz 2:7900c18cebd5 94 }
dahooz 2:7900c18cebd5 95 return led;
dahooz 2:7900c18cebd5 96
abuitrag 0:b738b4b05ed8 97 }
dahooz 2:7900c18cebd5 98
abuitrag 0:b738b4b05ed8 99 //returns 1 if right Port, else 0
dahooz 2:7900c18cebd5 100 int lookupLR(int j)
dahooz 2:7900c18cebd5 101 {
dahooz 2:7900c18cebd5 102 return j % 2;
abuitrag 0:b738b4b05ed8 103 }
dahooz 2:7900c18cebd5 104
abuitrag 0:b738b4b05ed8 105 //Hier kommt die Funktion
dahooz 2:7900c18cebd5 106
dahooz 2:7900c18cebd5 107
abuitrag 0:b738b4b05ed8 108 int main()
dahooz 2:7900c18cebd5 109 {
dahooz 2:7900c18cebd5 110
abuitrag 0:b738b4b05ed8 111 lpR = 0;
abuitrag 0:b738b4b05ed8 112 lpL = 0;
abuitrag 0:b738b4b05ed8 113 spiR.format(12, 0);
abuitrag 0:b738b4b05ed8 114 spiR.frequency(30 * 1000 * 1000);
abuitrag 0:b738b4b05ed8 115 spiL.format(12, 0);
abuitrag 0:b738b4b05ed8 116 spiL.frequency(30 * 1000 * 1000);
dahooz 2:7900c18cebd5 117 bpR=1;
dahooz 2:7900c18cebd5 118 bpL = 1;
abuitrag 4:7ce2cdd04dd8 119 /*
dahooz 2:7900c18cebd5 120 for (int v = 0; v<5; ++v) {
dahooz 2:7900c18cebd5 121
dahooz 2:7900c18cebd5 122 for(int i=47; i>=0; i--) {
abuitrag 0:b738b4b05ed8 123 bpR=1;
abuitrag 0:b738b4b05ed8 124 bpL = 1;
dahooz 2:7900c18cebd5 125 for(int j = 0; j<sizeof(outp[0])/sizeof(outp[0][0]); j++) {
dahooz 2:7900c18cebd5 126 if (lookupLR(j)) {
abuitrag 0:b738b4b05ed8 127 actualrowR[lookupport(j)] = outp[i][j];
dahooz 2:7900c18cebd5 128 } else {
abuitrag 0:b738b4b05ed8 129 actualrowL[lookupport(j)] = outp[i][j];
abuitrag 0:b738b4b05ed8 130 }
abuitrag 0:b738b4b05ed8 131 }
dahooz 2:7900c18cebd5 132 for (int k =0; k<sizeof(actualrowR)/sizeof(actualrowR[0]); ++k) {
abuitrag 0:b738b4b05ed8 133 spiR.write(actualrowR[k]);
abuitrag 0:b738b4b05ed8 134 }
dahooz 2:7900c18cebd5 135 for (int k =0; k<sizeof(actualrowL)/sizeof(actualrowL[0]); ++k) {
dahooz 2:7900c18cebd5 136 spiL.write(actualrowL[k]);
dahooz 2:7900c18cebd5 137 }
dahooz 2:7900c18cebd5 138 latch();
dahooz 2:7900c18cebd5 139 bpR=0;
dahooz 2:7900c18cebd5 140 bpL = 0;
dahooz 2:7900c18cebd5 141 wait(0.08);
dahooz 2:7900c18cebd5 142 }
dahooz 2:7900c18cebd5 143 for(int i=0; i<sizeof(outp)/sizeof(outp[0]); i++) {
dahooz 2:7900c18cebd5 144 bpR=1;
dahooz 2:7900c18cebd5 145 bpL = 1;
dahooz 2:7900c18cebd5 146 for(int j = 0; j<sizeof(outp[0])/sizeof(outp[0][0]); j++) {
dahooz 2:7900c18cebd5 147 if (lookupLR(j)) {
dahooz 2:7900c18cebd5 148 actualrowR[lookupport(j)] = outp[i][j];
dahooz 2:7900c18cebd5 149 } else {
dahooz 2:7900c18cebd5 150 actualrowL[lookupport(j)] = outp[i][j];
dahooz 2:7900c18cebd5 151 }
dahooz 2:7900c18cebd5 152 }
dahooz 2:7900c18cebd5 153 for (int k =0; k<sizeof(actualrowR)/sizeof(actualrowR[0]); ++k) {
dahooz 2:7900c18cebd5 154 spiR.write(actualrowR[k]);
dahooz 2:7900c18cebd5 155 }
dahooz 2:7900c18cebd5 156 for (int k =0; k<sizeof(actualrowL)/sizeof(actualrowL[0]); ++k) {
abuitrag 0:b738b4b05ed8 157 spiL.write(actualrowL[k]);
abuitrag 0:b738b4b05ed8 158 }
abuitrag 0:b738b4b05ed8 159 latch();
abuitrag 0:b738b4b05ed8 160 bpR=0;
abuitrag 0:b738b4b05ed8 161 bpL = 0;
abuitrag 0:b738b4b05ed8 162 wait(0.08);
abuitrag 0:b738b4b05ed8 163 }
dahooz 2:7900c18cebd5 164
dahooz 2:7900c18cebd5 165 }
abuitrag 4:7ce2cdd04dd8 166 */
dahooz 2:7900c18cebd5 167 //****************************//
dahooz 2:7900c18cebd5 168 //CAKE FUNCTION - YUM YUM
dahooz 2:7900c18cebd5 169 //****************************//
dahooz 2:7900c18cebd5 170
abuitrag 4:7ce2cdd04dd8 171 /*
dahooz 2:7900c18cebd5 172 {
dahooz 2:7900c18cebd5 173 in.mode(PullDown); // Set the pin to Pull Down mode.
dahooz 2:7900c18cebd5 174 in.rise(&flip); // Set up the interrupt for rising edge
dahooz 2:7900c18cebd5 175 t1.start(); // start the timer
dahooz 2:7900c18cebd5 176 t2.start();
dahooz 2:7900c18cebd5 177
dahooz 2:7900c18cebd5 178 for(; f<500;) { //as a placeholder until we find a way to navigate between programmes
dahooz 2:7900c18cebd5 179
dahooz 2:7900c18cebd5 180 if(t_period == 0) {
dahooz 2:7900c18cebd5 181 continue;
dahooz 2:7900c18cebd5 182 }
dahooz 2:7900c18cebd5 183 curt = t2.read_us();
dahooz 3:c9341431a333 184 if (curt < t_period * 0.135
dahooz 3:c9341431a333 185 || (t_period/4 < curt && curt < (t_period*0.135)*3 )
dahooz 3:c9341431a333 186 || (t_period/2 < curt && curt < (t_period/0.135)*5 )
dahooz 3:c9341431a333 187 || ((t_period/4)*3 < curt && curt < (t_period/0.135)*7 )
dahooz 2:7900c18cebd5 188 ) {
dahooz 2:7900c18cebd5 189 if (last != 0) {
dahooz 2:7900c18cebd5 190 //cake empty
dahooz 2:7900c18cebd5 191
dahooz 2:7900c18cebd5 192 bpL=1;
dahooz 2:7900c18cebd5 193 bpR=1;
dahooz 2:7900c18cebd5 194 for (int j = 0; j<48; j++) {
dahooz 2:7900c18cebd5 195 spiR.write(0x000);
dahooz 2:7900c18cebd5 196 spiL.write(0x000);
dahooz 2:7900c18cebd5 197 }
dahooz 2:7900c18cebd5 198 //for(int j=0; j<sizeof(cakeempty)/sizeof(cakeempty[0]); j++) {
dahooz 2:7900c18cebd5 199 // spiR.write(cakeempty[j]);
dahooz 2:7900c18cebd5 200 //spiL.write(cakeempty[j]);
dahooz 2:7900c18cebd5 201 //}
dahooz 2:7900c18cebd5 202 latch();
dahooz 2:7900c18cebd5 203 bpL=0;
dahooz 2:7900c18cebd5 204 bpR=0;
dahooz 2:7900c18cebd5 205 last = 0;
dahooz 2:7900c18cebd5 206 }
dahooz 2:7900c18cebd5 207 } else {
dahooz 2:7900c18cebd5 208 if (last != 1) {
dahooz 2:7900c18cebd5 209
dahooz 2:7900c18cebd5 210 //cake full
dahooz 2:7900c18cebd5 211 bpL=1;
dahooz 2:7900c18cebd5 212 bpR=1;
dahooz 2:7900c18cebd5 213
dahooz 2:7900c18cebd5 214 for (int j = 0; j<48; j++) {
dahooz 2:7900c18cebd5 215 spiR.write(0xFFF);
dahooz 2:7900c18cebd5 216 spiL.write(0xFFF);
dahooz 2:7900c18cebd5 217 }
dahooz 2:7900c18cebd5 218
dahooz 2:7900c18cebd5 219 //for(int j=0; j<sizeof(cakefull)/sizeof(cakefull[0]); j++) {
dahooz 2:7900c18cebd5 220 // spiR.write(cakefull[j]);
dahooz 2:7900c18cebd5 221 //spiL.write(cakefull[j]);
dahooz 2:7900c18cebd5 222 //}
dahooz 2:7900c18cebd5 223 latch();
dahooz 2:7900c18cebd5 224 bpL=0;
dahooz 2:7900c18cebd5 225 bpR=0;
dahooz 2:7900c18cebd5 226 last = 1;
abuitrag 0:b738b4b05ed8 227 }
abuitrag 0:b738b4b05ed8 228 }
abuitrag 0:b738b4b05ed8 229
abuitrag 0:b738b4b05ed8 230 }
abuitrag 4:7ce2cdd04dd8 231 */
dahooz 2:7900c18cebd5 232
abuitrag 0:b738b4b05ed8 233 /*********************************/
abuitrag 0:b738b4b05ed8 234 // RADAR FUNCTION FUCK YEAH //
abuitrag 0:b738b4b05ed8 235 /**********************************/
abuitrag 4:7ce2cdd04dd8 236 {
dahooz 2:7900c18cebd5 237 in.mode(PullDown); // Set the pin to Pull Down mode.
dahooz 2:7900c18cebd5 238 in.rise(&flip); // Set up the interrupt for rising edge
dahooz 2:7900c18cebd5 239 t1.start(); // start the timer
dahooz 2:7900c18cebd5 240 t2.start();
abuitrag 4:7ce2cdd04dd8 241 int m=0;
abuitrag 4:7ce2cdd04dd8 242 float a;
abuitrag 4:7ce2cdd04dd8 243 a=t_period*0.01667;
abuitrag 4:7ce2cdd04dd8 244 for(m=0; m<500;m++) { //as a placeholder until we find a way to navigate between programmes
abuitrag 0:b738b4b05ed8 245
dahooz 2:7900c18cebd5 246 if(t_period == 0) {
dahooz 2:7900c18cebd5 247 continue;
abuitrag 4:7ce2cdd04dd8 248 }
abuitrag 4:7ce2cdd04dd8 249 curt = t2.read_us(); //esta es la aguja
abuitrag 4:7ce2cdd04dd8 250 if (curt < t_period *0.25 + m*a)
abuitrag 4:7ce2cdd04dd8 251 {
abuitrag 4:7ce2cdd04dd8 252 if (last != 0) {
abuitrag 4:7ce2cdd04dd8 253 //cake empty
dahooz 2:7900c18cebd5 254
abuitrag 4:7ce2cdd04dd8 255 bpL=1;
abuitrag 4:7ce2cdd04dd8 256 bpR=1;
abuitrag 4:7ce2cdd04dd8 257 for (int j = 0; j<48; j++) {
abuitrag 4:7ce2cdd04dd8 258 spiR.write(0x000);
abuitrag 4:7ce2cdd04dd8 259 spiL.write(0x000);
abuitrag 4:7ce2cdd04dd8 260 }
abuitrag 4:7ce2cdd04dd8 261 latch();
abuitrag 4:7ce2cdd04dd8 262 bpL=0;
abuitrag 4:7ce2cdd04dd8 263 bpR=0;
abuitrag 4:7ce2cdd04dd8 264 last = 0;
abuitrag 4:7ce2cdd04dd8 265 }
abuitrag 4:7ce2cdd04dd8 266 } else {
abuitrag 4:7ce2cdd04dd8 267 if (last != 1) {
dahooz 2:7900c18cebd5 268
abuitrag 4:7ce2cdd04dd8 269 //cake full
abuitrag 4:7ce2cdd04dd8 270 bpL=1;
abuitrag 4:7ce2cdd04dd8 271 bpR=1;
abuitrag 4:7ce2cdd04dd8 272
abuitrag 4:7ce2cdd04dd8 273 for (int j = 0; j<48; j++) {
abuitrag 4:7ce2cdd04dd8 274 spiR.write(0xFFF);
abuitrag 4:7ce2cdd04dd8 275 spiL.write(0x000);
dahooz 2:7900c18cebd5 276 }
dahooz 2:7900c18cebd5 277
abuitrag 4:7ce2cdd04dd8 278 latch();
abuitrag 4:7ce2cdd04dd8 279 bpL=0;
abuitrag 4:7ce2cdd04dd8 280 bpR=0;
abuitrag 4:7ce2cdd04dd8 281 last = 1;
dahooz 2:7900c18cebd5 282 }
dahooz 2:7900c18cebd5 283 }
abuitrag 4:7ce2cdd04dd8 284
abuitrag 4:7ce2cdd04dd8 285
abuitrag 4:7ce2cdd04dd8 286
abuitrag 4:7ce2cdd04dd8 287
abuitrag 4:7ce2cdd04dd8 288 curt = t2.read_us(); //maes di aqui va el puntillo en teoria
abuitrag 4:7ce2cdd04dd8 289 if (curt == t_period)
abuitrag 4:7ce2cdd04dd8 290 {
abuitrag 4:7ce2cdd04dd8 291 if (last != 0) {
abuitrag 4:7ce2cdd04dd8 292 //cake empty
dahooz 2:7900c18cebd5 293
abuitrag 4:7ce2cdd04dd8 294 bpL=1;
abuitrag 4:7ce2cdd04dd8 295 bpR=1;
abuitrag 4:7ce2cdd04dd8 296 for (int j = 0; j<48; j++) {
abuitrag 4:7ce2cdd04dd8 297 spiR.write(0x000);
abuitrag 4:7ce2cdd04dd8 298 spiL.write(0x000);
abuitrag 4:7ce2cdd04dd8 299 }
abuitrag 4:7ce2cdd04dd8 300 latch();
abuitrag 4:7ce2cdd04dd8 301 bpL=0;
abuitrag 4:7ce2cdd04dd8 302 bpR=0;
abuitrag 4:7ce2cdd04dd8 303 last = 0;
abuitrag 4:7ce2cdd04dd8 304 }
abuitrag 4:7ce2cdd04dd8 305 } else {
abuitrag 4:7ce2cdd04dd8 306 if (last != 1) {
dahooz 2:7900c18cebd5 307
abuitrag 4:7ce2cdd04dd8 308 //cake full
abuitrag 4:7ce2cdd04dd8 309 bpL=1;
abuitrag 4:7ce2cdd04dd8 310 bpR=1;
dahooz 2:7900c18cebd5 311
abuitrag 4:7ce2cdd04dd8 312 for (int j = 0; j<48; j++) {
abuitrag 4:7ce2cdd04dd8 313 spiR.write(radardot[j]);
abuitrag 4:7ce2cdd04dd8 314 spiL.write(0x000);
abuitrag 4:7ce2cdd04dd8 315 }
abuitrag 4:7ce2cdd04dd8 316
abuitrag 4:7ce2cdd04dd8 317 latch();
abuitrag 4:7ce2cdd04dd8 318 bpL=0;
abuitrag 4:7ce2cdd04dd8 319 bpR=0;
abuitrag 4:7ce2cdd04dd8 320 last = 1;
abuitrag 4:7ce2cdd04dd8 321 }
dahooz 2:7900c18cebd5 322 }
abuitrag 4:7ce2cdd04dd8 323 }
abuitrag 4:7ce2cdd04dd8 324
dahooz 2:7900c18cebd5 325
abuitrag 4:7ce2cdd04dd8 326 } }