Main function with frequency

Dependencies:   mbed

Committer:
abuitrag
Date:
Fri Jun 27 00:13:36 2014 +0000
Revision:
6:185747027de6
Parent:
TestRadar.cpp@5:4a44eb020490
fucked up, sorry, restored old function;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abuitrag 0:b738b4b05ed8 1 #include "mbed.h"
abuitrag 5:4a44eb020490 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);
abuitrag 5:4a44eb020490 6
abuitrag 0:b738b4b05ed8 7 SPI spiL(p5, p6, p7);
abuitrag 0:b738b4b05ed8 8 DigitalOut lpL(p8);
abuitrag 0:b738b4b05ed8 9 DigitalOut bpL(p9);
abuitrag 5:4a44eb020490 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 }
abuitrag 5:4a44eb020490 22
abuitrag 5:4a44eb020490 23
abuitrag 5:4a44eb020490 24
dahooz 2:7900c18cebd5 25 //FREQ CONTROL CONFIG
abuitrag 5:4a44eb020490 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 5:4a44eb020490 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 5:4a44eb020490 38
abuitrag 0:b738b4b05ed8 39 //RUNTIME VARS
abuitrag 5:4a44eb020490 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 5:4a44eb020490 46
abuitrag 0:b738b4b05ed8 47 //DUMMY FUNCTION AS THERE IS NO HEADER FILE
abuitrag 5:4a44eb020490 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 }
abuitrag 5:4a44eb020490 59
abuitrag 5:4a44eb020490 60 short outp[48][48]= {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF},
abuitrag 5:4a44eb020490 61 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0},
abuitrag 5:4a44eb020490 62 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0},
abuitrag 5:4a44eb020490 63 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0},
abuitrag 5:4a44eb020490 64 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0},
abuitrag 5:4a44eb020490 65 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0},
abuitrag 5:4a44eb020490 66 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 67 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 68 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 69 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 70 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 71 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 72 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 73 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 74 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 75 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 76 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 77 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 78 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 79 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 80 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 81 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 82 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 83 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 84 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 85 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 86 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 87 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 88 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 89 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 90 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 91 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 92 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 93 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 94 {0,0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 95 {0,0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 96 {0,0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 97 {0,0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 98 {0,0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 99 {0,0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 100 {0,0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 101 {0,0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 102 {0,0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 103 {0,0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 104 {0,0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 105 {0,0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 106 {0,0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 107 {0xFFF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
abuitrag 5:4a44eb020490 108 };
abuitrag 5:4a44eb020490 109
abuitrag 5:4a44eb020490 110 //short actualrowR[48]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
abuitrag 5:4a44eb020490 111 //short actualrowL[48]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
abuitrag 5:4a44eb020490 112 int x,j;
abuitrag 5:4a44eb020490 113
abuitrag 5:4a44eb020490 114 short actualrowR[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};
abuitrag 5:4a44eb020490 115 short actualrowL[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};
abuitrag 5:4a44eb020490 116
abuitrag 5:4a44eb020490 117 short cakeempty[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};
abuitrag 5:4a44eb020490 118 short cakefull[24]= {0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,
abuitrag 5:4a44eb020490 119 0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF
abuitrag 5:4a44eb020490 120 };
abuitrag 5:4a44eb020490 121
dahooz 2:7900c18cebd5 122 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 123 short radaron[24]= {0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,
dahooz 2:7900c18cebd5 124 0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF,0xFFF
dahooz 2:7900c18cebd5 125 };
dahooz 2:7900c18cebd5 126 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};
abuitrag 5:4a44eb020490 127
abuitrag 0:b738b4b05ed8 128 int lookupport(int j)
abuitrag 0:b738b4b05ed8 129 {
dahooz 2:7900c18cebd5 130 int led, p;
abuitrag 5:4a44eb020490 131
dahooz 2:7900c18cebd5 132 if(j%2 == 1) //Alle ungeradezahligen Ports
dahooz 2:7900c18cebd5 133 //werden vom rechten Controller angesteuert
dahooz 2:7900c18cebd5 134 //entsprechend wird "R" als "Side" zugewiesen
abuitrag 0:b738b4b05ed8 135 {
abuitrag 5:4a44eb020490 136
dahooz 2:7900c18cebd5 137 p = j/2; //Durch Division /2 bekommen wir eine "normierte Reihe" also (0,1 ,2 ... 12)
abuitrag 5:4a44eb020490 138
dahooz 2:7900c18cebd5 139 if (p%2 == 0) //nochmal %2 da Ports sich abwechseln (0, 23, 1, 22... siehe Tabelle)
dahooz 2:7900c18cebd5 140 led = 23 - (p/2); //also von "p" ausgegangen, beginnen gerade Zahlen von hinten an (Ports 23, 22, 21... 12)
dahooz 2:7900c18cebd5 141 else
dahooz 2:7900c18cebd5 142 led = (p/2); // ungerade Zahlen beginnen von vorne an (Port 0, 1, 2... 11)
abuitrag 0:b738b4b05ed8 143 }
abuitrag 5:4a44eb020490 144
dahooz 2:7900c18cebd5 145 else
abuitrag 5:4a44eb020490 146
dahooz 2:7900c18cebd5 147 {
abuitrag 0:b738b4b05ed8 148 p = (j-1)/2;
abuitrag 5:4a44eb020490 149
abuitrag 0:b738b4b05ed8 150 if (p%2 == 0)
dahooz 2:7900c18cebd5 151 led = 23 - (p/2);
abuitrag 0:b738b4b05ed8 152 else
dahooz 2:7900c18cebd5 153 led = (p/2);
dahooz 2:7900c18cebd5 154 }
dahooz 2:7900c18cebd5 155 return led;
abuitrag 5:4a44eb020490 156
abuitrag 0:b738b4b05ed8 157 }
abuitrag 5:4a44eb020490 158
abuitrag 0:b738b4b05ed8 159 //returns 1 if right Port, else 0
dahooz 2:7900c18cebd5 160 int lookupLR(int j)
dahooz 2:7900c18cebd5 161 {
dahooz 2:7900c18cebd5 162 return j % 2;
abuitrag 0:b738b4b05ed8 163 }
abuitrag 5:4a44eb020490 164
abuitrag 0:b738b4b05ed8 165 //Hier kommt die Funktion
abuitrag 5:4a44eb020490 166
abuitrag 5:4a44eb020490 167
abuitrag 0:b738b4b05ed8 168 int main()
dahooz 2:7900c18cebd5 169 {
abuitrag 5:4a44eb020490 170
abuitrag 0:b738b4b05ed8 171 lpR = 0;
abuitrag 0:b738b4b05ed8 172 lpL = 0;
abuitrag 0:b738b4b05ed8 173 spiR.format(12, 0);
abuitrag 0:b738b4b05ed8 174 spiR.frequency(30 * 1000 * 1000);
abuitrag 0:b738b4b05ed8 175 spiL.format(12, 0);
abuitrag 0:b738b4b05ed8 176 spiL.frequency(30 * 1000 * 1000);
dahooz 2:7900c18cebd5 177 bpR=1;
dahooz 2:7900c18cebd5 178 bpL = 1;
abuitrag 5:4a44eb020490 179
abuitrag 5:4a44eb020490 180 /*
abuitrag 5:4a44eb020490 181 LocalFileSystem local("local");
abuitrag 5:4a44eb020490 182 FILE *fp;
abuitrag 5:4a44eb020490 183 fp = fopen("/local/curstate.txt", "a+"); // Open "out.txt" on the local file system for writing
abuitrag 5:4a44eb020490 184
abuitrag 5:4a44eb020490 185 if (fp==NULL) {
abuitrag 5:4a44eb020490 186 fp = freopen("/local/curstate.txt","w", fp);
abuitrag 5:4a44eb020490 187 led =1;
abuitrag 5:4a44eb020490 188 freopen(NULL, "r",fp);
abuitrag 5:4a44eb020490 189
abuitrag 5:4a44eb020490 190 //error("File could not be opened!");
abuitrag 5:4a44eb020490 191 }
abuitrag 5:4a44eb020490 192 led4 = 1;
abuitrag 5:4a44eb020490 193 int cstate = fgetc(fp);
abuitrag 5:4a44eb020490 194 int state = -1;
abuitrag 5:4a44eb020490 195 if (cstate == EOF) {
abuitrag 5:4a44eb020490 196 freopen(NULL, "w", fp);
abuitrag 5:4a44eb020490 197 if (fputc('0',fp) == EOF) {
abuitrag 5:4a44eb020490 198 led2=1;
abuitrag 5:4a44eb020490 199 //error("File can not be used!");
abuitrag 5:4a44eb020490 200 }
abuitrag 5:4a44eb020490 201 freopen(NULL, "r", fp);
abuitrag 5:4a44eb020490 202 }
abuitrag 5:4a44eb020490 203 led4 =1;
abuitrag 5:4a44eb020490 204 switch (cstate) {
abuitrag 5:4a44eb020490 205 case '0': {
abuitrag 5:4a44eb020490 206 state = 0;
abuitrag 5:4a44eb020490 207 break;
abuitrag 5:4a44eb020490 208 }
abuitrag 5:4a44eb020490 209 case '1': {
abuitrag 5:4a44eb020490 210 state = 1;
abuitrag 5:4a44eb020490 211 break;
abuitrag 5:4a44eb020490 212 }
abuitrag 5:4a44eb020490 213 case '2': {
abuitrag 5:4a44eb020490 214 state = 2;
abuitrag 5:4a44eb020490 215 break;
abuitrag 5:4a44eb020490 216 }
abuitrag 5:4a44eb020490 217 default: {
abuitrag 5:4a44eb020490 218 freopen(NULL, "r", fp);
abuitrag 5:4a44eb020490 219 if (fputc('0',fp) == EOF) {
abuitrag 5:4a44eb020490 220 led3=1;
abuitrag 5:4a44eb020490 221 //error("File can not be used!");
abuitrag 5:4a44eb020490 222 }
abuitrag 5:4a44eb020490 223 freopen(NULL, "r", fp);
abuitrag 5:4a44eb020490 224 state = 0;
abuitrag 5:4a44eb020490 225 break;
abuitrag 5:4a44eb020490 226 }
abuitrag 5:4a44eb020490 227 }
abuitrag 5:4a44eb020490 228
abuitrag 5:4a44eb020490 229 fclose(fp);
abuitrag 5:4a44eb020490 230 */
abuitrag 5:4a44eb020490 231
abuitrag 5:4a44eb020490 232
abuitrag 5:4a44eb020490 233
dahooz 2:7900c18cebd5 234 for (int v = 0; v<5; ++v) {
abuitrag 5:4a44eb020490 235
dahooz 2:7900c18cebd5 236 for(int i=47; i>=0; i--) {
abuitrag 0:b738b4b05ed8 237 bpR=1;
abuitrag 0:b738b4b05ed8 238 bpL = 1;
dahooz 2:7900c18cebd5 239 for(int j = 0; j<sizeof(outp[0])/sizeof(outp[0][0]); j++) {
dahooz 2:7900c18cebd5 240 if (lookupLR(j)) {
abuitrag 0:b738b4b05ed8 241 actualrowR[lookupport(j)] = outp[i][j];
dahooz 2:7900c18cebd5 242 } else {
abuitrag 0:b738b4b05ed8 243 actualrowL[lookupport(j)] = outp[i][j];
abuitrag 0:b738b4b05ed8 244 }
abuitrag 0:b738b4b05ed8 245 }
dahooz 2:7900c18cebd5 246 for (int k =0; k<sizeof(actualrowR)/sizeof(actualrowR[0]); ++k) {
abuitrag 0:b738b4b05ed8 247 spiR.write(actualrowR[k]);
abuitrag 0:b738b4b05ed8 248 }
dahooz 2:7900c18cebd5 249 for (int k =0; k<sizeof(actualrowL)/sizeof(actualrowL[0]); ++k) {
dahooz 2:7900c18cebd5 250 spiL.write(actualrowL[k]);
dahooz 2:7900c18cebd5 251 }
dahooz 2:7900c18cebd5 252 latch();
dahooz 2:7900c18cebd5 253 bpR=0;
dahooz 2:7900c18cebd5 254 bpL = 0;
dahooz 2:7900c18cebd5 255 wait(0.08);
dahooz 2:7900c18cebd5 256 }
dahooz 2:7900c18cebd5 257 for(int i=0; i<sizeof(outp)/sizeof(outp[0]); i++) {
dahooz 2:7900c18cebd5 258 bpR=1;
dahooz 2:7900c18cebd5 259 bpL = 1;
dahooz 2:7900c18cebd5 260 for(int j = 0; j<sizeof(outp[0])/sizeof(outp[0][0]); j++) {
dahooz 2:7900c18cebd5 261 if (lookupLR(j)) {
dahooz 2:7900c18cebd5 262 actualrowR[lookupport(j)] = outp[i][j];
dahooz 2:7900c18cebd5 263 } else {
dahooz 2:7900c18cebd5 264 actualrowL[lookupport(j)] = outp[i][j];
dahooz 2:7900c18cebd5 265 }
dahooz 2:7900c18cebd5 266 }
dahooz 2:7900c18cebd5 267 for (int k =0; k<sizeof(actualrowR)/sizeof(actualrowR[0]); ++k) {
dahooz 2:7900c18cebd5 268 spiR.write(actualrowR[k]);
dahooz 2:7900c18cebd5 269 }
dahooz 2:7900c18cebd5 270 for (int k =0; k<sizeof(actualrowL)/sizeof(actualrowL[0]); ++k) {
abuitrag 0:b738b4b05ed8 271 spiL.write(actualrowL[k]);
abuitrag 0:b738b4b05ed8 272 }
abuitrag 0:b738b4b05ed8 273 latch();
abuitrag 0:b738b4b05ed8 274 bpR=0;
abuitrag 0:b738b4b05ed8 275 bpL = 0;
abuitrag 0:b738b4b05ed8 276 wait(0.08);
abuitrag 0:b738b4b05ed8 277 }
abuitrag 5:4a44eb020490 278
dahooz 2:7900c18cebd5 279 }
abuitrag 5:4a44eb020490 280
dahooz 2:7900c18cebd5 281 //****************************//
dahooz 2:7900c18cebd5 282 //CAKE FUNCTION - YUM YUM
dahooz 2:7900c18cebd5 283 //****************************//
abuitrag 5:4a44eb020490 284
abuitrag 5:4a44eb020490 285
dahooz 2:7900c18cebd5 286 {
dahooz 2:7900c18cebd5 287 in.mode(PullDown); // Set the pin to Pull Down mode.
dahooz 2:7900c18cebd5 288 in.rise(&flip); // Set up the interrupt for rising edge
dahooz 2:7900c18cebd5 289 t1.start(); // start the timer
dahooz 2:7900c18cebd5 290 t2.start();
abuitrag 5:4a44eb020490 291
dahooz 2:7900c18cebd5 292 for(; f<500;) { //as a placeholder until we find a way to navigate between programmes
abuitrag 5:4a44eb020490 293
dahooz 2:7900c18cebd5 294 if(t_period == 0) {
dahooz 2:7900c18cebd5 295 continue;
dahooz 2:7900c18cebd5 296 }
dahooz 2:7900c18cebd5 297 curt = t2.read_us();
dahooz 3:c9341431a333 298 if (curt < t_period * 0.135
dahooz 3:c9341431a333 299 || (t_period/4 < curt && curt < (t_period*0.135)*3 )
dahooz 3:c9341431a333 300 || (t_period/2 < curt && curt < (t_period/0.135)*5 )
dahooz 3:c9341431a333 301 || ((t_period/4)*3 < curt && curt < (t_period/0.135)*7 )
dahooz 2:7900c18cebd5 302 ) {
dahooz 2:7900c18cebd5 303 if (last != 0) {
dahooz 2:7900c18cebd5 304 //cake empty
abuitrag 5:4a44eb020490 305
dahooz 2:7900c18cebd5 306 bpL=1;
dahooz 2:7900c18cebd5 307 bpR=1;
dahooz 2:7900c18cebd5 308 for (int j = 0; j<48; j++) {
dahooz 2:7900c18cebd5 309 spiR.write(0x000);
dahooz 2:7900c18cebd5 310 spiL.write(0x000);
dahooz 2:7900c18cebd5 311 }
dahooz 2:7900c18cebd5 312 //for(int j=0; j<sizeof(cakeempty)/sizeof(cakeempty[0]); j++) {
dahooz 2:7900c18cebd5 313 // spiR.write(cakeempty[j]);
dahooz 2:7900c18cebd5 314 //spiL.write(cakeempty[j]);
dahooz 2:7900c18cebd5 315 //}
dahooz 2:7900c18cebd5 316 latch();
dahooz 2:7900c18cebd5 317 bpL=0;
dahooz 2:7900c18cebd5 318 bpR=0;
dahooz 2:7900c18cebd5 319 last = 0;
dahooz 2:7900c18cebd5 320 }
dahooz 2:7900c18cebd5 321 } else {
dahooz 2:7900c18cebd5 322 if (last != 1) {
abuitrag 5:4a44eb020490 323
dahooz 2:7900c18cebd5 324 //cake full
dahooz 2:7900c18cebd5 325 bpL=1;
dahooz 2:7900c18cebd5 326 bpR=1;
abuitrag 5:4a44eb020490 327
dahooz 2:7900c18cebd5 328 for (int j = 0; j<48; j++) {
dahooz 2:7900c18cebd5 329 spiR.write(0xFFF);
dahooz 2:7900c18cebd5 330 spiL.write(0xFFF);
dahooz 2:7900c18cebd5 331 }
abuitrag 5:4a44eb020490 332
dahooz 2:7900c18cebd5 333 //for(int j=0; j<sizeof(cakefull)/sizeof(cakefull[0]); j++) {
dahooz 2:7900c18cebd5 334 // spiR.write(cakefull[j]);
dahooz 2:7900c18cebd5 335 //spiL.write(cakefull[j]);
dahooz 2:7900c18cebd5 336 //}
dahooz 2:7900c18cebd5 337 latch();
dahooz 2:7900c18cebd5 338 bpL=0;
dahooz 2:7900c18cebd5 339 bpR=0;
dahooz 2:7900c18cebd5 340 last = 1;
abuitrag 0:b738b4b05ed8 341 }
abuitrag 0:b738b4b05ed8 342 }
abuitrag 5:4a44eb020490 343
abuitrag 0:b738b4b05ed8 344 }
abuitrag 5:4a44eb020490 345
abuitrag 5:4a44eb020490 346
abuitrag 0:b738b4b05ed8 347 /*********************************/
abuitrag 0:b738b4b05ed8 348 // RADAR FUNCTION FUCK YEAH //
abuitrag 0:b738b4b05ed8 349 /**********************************/
abuitrag 5:4a44eb020490 350
abuitrag 5:4a44eb020490 351 f = 0;
dahooz 2:7900c18cebd5 352 in.mode(PullDown); // Set the pin to Pull Down mode.
dahooz 2:7900c18cebd5 353 in.rise(&flip); // Set up the interrupt for rising edge
dahooz 2:7900c18cebd5 354 t1.start(); // start the timer
dahooz 2:7900c18cebd5 355 t2.start();
abuitrag 5:4a44eb020490 356 //t3.start();
abuitrag 5:4a44eb020490 357
abuitrag 5:4a44eb020490 358 lpR = 0;
abuitrag 5:4a44eb020490 359 lpL = 0;
abuitrag 5:4a44eb020490 360 bpR=0;
abuitrag 5:4a44eb020490 361 bpL = 0;
abuitrag 5:4a44eb020490 362
abuitrag 5:4a44eb020490 363 for(; f<500;) {
abuitrag 5:4a44eb020490 364 bpL=1;
abuitrag 5:4a44eb020490 365 bpR=1;
abuitrag 5:4a44eb020490 366 for(j=0; j<sizeof(radaron)/sizeof(radaron[0]); j++) {
abuitrag 5:4a44eb020490 367 if(j%2==1) {
abuitrag 5:4a44eb020490 368 spiR.write(radaron[j]);
dahooz 2:7900c18cebd5 369 }
dahooz 2:7900c18cebd5 370 }
abuitrag 5:4a44eb020490 371 latch();
abuitrag 5:4a44eb020490 372 bpL=0;
abuitrag 5:4a44eb020490 373 bpR=0;
abuitrag 5:4a44eb020490 374 wait(0.15);
abuitrag 5:4a44eb020490 375
abuitrag 5:4a44eb020490 376 //right side off, left side on
abuitrag 5:4a44eb020490 377 //only if needed
abuitrag 5:4a44eb020490 378 bpL=1;
abuitrag 5:4a44eb020490 379 bpR=1;
abuitrag 5:4a44eb020490 380 for(j=0; j<sizeof(radaroff)/sizeof(radaroff[0]); j++) {
abuitrag 5:4a44eb020490 381 spiR.write(radaroff[j]);
abuitrag 5:4a44eb020490 382 }
abuitrag 5:4a44eb020490 383 bpL=0;
abuitrag 5:4a44eb020490 384 bpR=0;
abuitrag 5:4a44eb020490 385 wait(0.15);
abuitrag 5:4a44eb020490 386
abuitrag 5:4a44eb020490 387 //HERE COMES THE DOT, YO
abuitrag 5:4a44eb020490 388
abuitrag 5:4a44eb020490 389 bpL=1;
abuitrag 5:4a44eb020490 390 for(j=0; j<sizeof(radardot)/sizeof(radardot[0]); j++) {
abuitrag 5:4a44eb020490 391 spiL.write(radardot[j]);
abuitrag 5:4a44eb020490 392 }
abuitrag 5:4a44eb020490 393 latch();
abuitrag 5:4a44eb020490 394 bpL=0;
abuitrag 5:4a44eb020490 395 bpR=0;
abuitrag 5:4a44eb020490 396 wait(0.1);
abuitrag 5:4a44eb020490 397
abuitrag 5:4a44eb020490 398 bpL=1;
abuitrag 5:4a44eb020490 399 for(j=0; j<sizeof(radardot)/sizeof(radardot[0]); j++) {
abuitrag 5:4a44eb020490 400 spiL.write(radaroff[j]);
abuitrag 5:4a44eb020490 401 }
abuitrag 5:4a44eb020490 402 latch();
abuitrag 5:4a44eb020490 403 bpL=0;
abuitrag 5:4a44eb020490 404 bpR=0;
abuitrag 5:4a44eb020490 405 wait(0.1);
abuitrag 5:4a44eb020490 406
abuitrag 5:4a44eb020490 407 /*
abuitrag 5:4a44eb020490 408 if(t_period == 0) {
abuitrag 5:4a44eb020490 409 continue;
abuitrag 5:4a44eb020490 410 }*/
abuitrag 5:4a44eb020490 411
abuitrag 5:4a44eb020490 412
abuitrag 5:4a44eb020490 413
abuitrag 5:4a44eb020490 414
abuitrag 5:4a44eb020490 415 /* OLD FUNCTION
abuitrag 5:4a44eb020490 416 *
abuitrag 5:4a44eb020490 417 *
abuitrag 5:4a44eb020490 418
abuitrag 5:4a44eb020490 419 in.mode(PullDown); // Set the pin to Pull Down mode.
abuitrag 5:4a44eb020490 420 in.rise(&flip); // Set up the interrupt for rising edge
abuitrag 5:4a44eb020490 421 t1.start(); // start the timer
abuitrag 5:4a44eb020490 422 t2.start();
abuitrag 5:4a44eb020490 423 int a = 0;
abuitrag 5:4a44eb020490 424
abuitrag 5:4a44eb020490 425 while(1) { //as a placeholder until we find a way to navigate between programmes
abuitrag 5:4a44eb020490 426 a++;
abuitrag 5:4a44eb020490 427 if(t_period == 0) {
abuitrag 5:4a44eb020490 428 continue;
abuitrag 5:4a44eb020490 429 }
abuitrag 5:4a44eb020490 430 curt = t2.read_us();
abuitrag 5:4a44eb020490 431 if (curt !=t_period) {
abuitrag 5:4a44eb020490 432
abuitrag 5:4a44eb020490 433 } else {
abuitrag 5:4a44eb020490 434 if (last != 0) {
abuitrag 5:4a44eb020490 435 //cake empty
abuitrag 5:4a44eb020490 436
abuitrag 5:4a44eb020490 437 //HERE COMES THE DOT, YO
abuitrag 5:4a44eb020490 438
abuitrag 5:4a44eb020490 439 bpL=1;
abuitrag 5:4a44eb020490 440 for(j=0; j<sizeof(radardot)/sizeof(radardot[0]); j++) {
abuitrag 5:4a44eb020490 441 spiL.write(radardot[j]);
abuitrag 5:4a44eb020490 442 }
abuitrag 5:4a44eb020490 443 latch();
abuitrag 5:4a44eb020490 444 bpL=0;
abuitrag 5:4a44eb020490 445 bpR=0;
abuitrag 5:4a44eb020490 446 last = 0;
abuitrag 4:7ce2cdd04dd8 447 }
abuitrag 5:4a44eb020490 448 if (last != 1) {
abuitrag 5:4a44eb020490 449
abuitrag 5:4a44eb020490 450 bpL=1;
abuitrag 5:4a44eb020490 451 for(j=0; j<sizeof(radardot)/sizeof(radardot[0]); j++) {
abuitrag 5:4a44eb020490 452 spiL.write(radaroff[j]);
abuitrag 5:4a44eb020490 453 }
abuitrag 5:4a44eb020490 454 latch();
abuitrag 5:4a44eb020490 455 bpL=0;
abuitrag 5:4a44eb020490 456 bpR=0;
abuitrag 5:4a44eb020490 457 last = 1;
abuitrag 4:7ce2cdd04dd8 458 }
abuitrag 4:7ce2cdd04dd8 459 }
dahooz 2:7900c18cebd5 460 }
abuitrag 5:4a44eb020490 461 */
abuitrag 5:4a44eb020490 462
abuitrag 5:4a44eb020490 463
abuitrag 5:4a44eb020490 464
abuitrag 4:7ce2cdd04dd8 465 }
abuitrag 4:7ce2cdd04dd8 466
abuitrag 5:4a44eb020490 467
abuitrag 5:4a44eb020490 468
abuitrag 5:4a44eb020490 469 //Please notice that the wait times for the needle and the dot are different - THIS IS INTENDED
abuitrag 5:4a44eb020490 470
abuitrag 5:4a44eb020490 471
abuitrag 5:4a44eb020490 472 //radaron
abuitrag 5:4a44eb020490 473
abuitrag 5:4a44eb020490 474 /*for(x=0;x<20;x++){
abuitrag 5:4a44eb020490 475 bpL=1;
abuitrag 5:4a44eb020490 476 bpR=1;
abuitrag 5:4a44eb020490 477 for(j=0;j<sizeof(radaron)/sizeof(radaron[0]);j++){
abuitrag 5:4a44eb020490 478 spiR.write(radaron[j]);
abuitrag 5:4a44eb020490 479 }
abuitrag 5:4a44eb020490 480 latch();
abuitrag 5:4a44eb020490 481 bpL=0;
abuitrag 5:4a44eb020490 482 bpR=0;
abuitrag 5:4a44eb020490 483 wait(0.15);
abuitrag 5:4a44eb020490 484
abuitrag 5:4a44eb020490 485 //radaroff
abuitrag 5:4a44eb020490 486
abuitrag 5:4a44eb020490 487 bpL=1;
abuitrag 5:4a44eb020490 488 bpR=1;
abuitrag 5:4a44eb020490 489 for(j=0;j<sizeof(radaroff)/sizeof(radaroff[0]);j++){
abuitrag 5:4a44eb020490 490 spiR.write(radaroff[j]);
abuitrag 5:4a44eb020490 491 }
abuitrag 5:4a44eb020490 492 bpL=0;
abuitrag 5:4a44eb020490 493 bpR=0;
abuitrag 5:4a44eb020490 494 wait(0.15);
abuitrag 5:4a44eb020490 495
abuitrag 5:4a44eb020490 496 //HERE COMES THE DOT, YO
abuitrag 5:4a44eb020490 497
abuitrag 5:4a44eb020490 498 bpL=1;
abuitrag 5:4a44eb020490 499 for(j=0;j<sizeof(radardot)/sizeof(radardot[0]);j++){
abuitrag 5:4a44eb020490 500 spiL.write(radardot[j]);
abuitrag 5:4a44eb020490 501 }
abuitrag 5:4a44eb020490 502 latch();
abuitrag 5:4a44eb020490 503 bpL=0;
abuitrag 5:4a44eb020490 504 bpR=0;
abuitrag 5:4a44eb020490 505 wait(0.1);
abuitrag 5:4a44eb020490 506
abuitrag 5:4a44eb020490 507 bpL=1;
abuitrag 5:4a44eb020490 508 for(j=0;j<sizeof(radardot)/sizeof(radardot[0]);j++){
abuitrag 5:4a44eb020490 509 spiL.write(radaroff[j]);
abuitrag 5:4a44eb020490 510 }
abuitrag 5:4a44eb020490 511 latch();
abuitrag 5:4a44eb020490 512 bpL=0;
abuitrag 5:4a44eb020490 513 bpR=0;
abuitrag 5:4a44eb020490 514 wait(0.1);
abuitrag 5:4a44eb020490 515 }*/
abuitrag 5:4a44eb020490 516 }
dahooz 2:7900c18cebd5 517
abuitrag 5:4a44eb020490 518 }
abuitrag 5:4a44eb020490 519