STM mbed.org OSRAM team / Mbed 2 deprecated eye_r_eye-htpa32x32-v_1_9

Dependencies:   eye_r_eye-htpa32x32-v_1_8-ticker mbed

Fork of eye_r_eye-htpa32x32-v_1_8-ticker by STM mbed.org OSRAM team

Committer:
withboobs
Date:
Wed Dec 13 19:16:26 2017 +0000
Revision:
0:851be67e4df5
Child:
1:7fd5cc2052cf
nothing to say;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
withboobs 0:851be67e4df5 1 #include "mbed.h"
withboobs 0:851be67e4df5 2
withboobs 0:851be67e4df5 3 /**
withboobs 0:851be67e4df5 4 * HTPA32x32dL2_1HiSiF5_0: TN=96
withboobs 0:851be67e4df5 5 */
withboobs 0:851be67e4df5 6 #include "heimann32x32.h"
withboobs 0:851be67e4df5 7
withboobs 0:851be67e4df5 8 #define FIRMWARE "eye_r_eye-v_1_8-ticker"
withboobs 0:851be67e4df5 9
withboobs 0:851be67e4df5 10 //#define BAUDRATE 115200
withboobs 0:851be67e4df5 11 #define BAUDRATE 230400
withboobs 0:851be67e4df5 12 #define PROC (HTPA_PROC_ELOFFS | HTPA_PROC_THOFFS)
withboobs 0:851be67e4df5 13 //#define PROC (HTPA_PROC_ELOFFS | HTPA_PROC_THOFFS | HTPA_PROC_CONVERT)
withboobs 0:851be67e4df5 14
withboobs 0:851be67e4df5 15 #if BAUDRATE == 230400
withboobs 0:851be67e4df5 16 #define HTPA_DT_MS 50
withboobs 0:851be67e4df5 17 #elif BAUDRATE == 115200
withboobs 0:851be67e4df5 18 #define HTPA_DT_MS 100
withboobs 0:851be67e4df5 19 #endif
withboobs 0:851be67e4df5 20
withboobs 0:851be67e4df5 21 I2C i2c(I2C_SDA, I2C_SCL), i2ce(I2C_SDA, I2C_SCL);
withboobs 0:851be67e4df5 22
withboobs 0:851be67e4df5 23 HTPA32x32 h = HTPA32x32( (I2C *) &i2c, (I2C *) &i2ce);
withboobs 0:851be67e4df5 24
withboobs 0:851be67e4df5 25 Serial pc(SERIAL_TX, SERIAL_RX);
withboobs 0:851be67e4df5 26
withboobs 0:851be67e4df5 27 DigitalOut led_green(LED2);
withboobs 0:851be67e4df5 28
withboobs 0:851be67e4df5 29 Ticker tick;
withboobs 0:851be67e4df5 30 volatile bool call_htpa=0;
withboobs 0:851be67e4df5 31 void tick_set_htpa_flag( void )
withboobs 0:851be67e4df5 32 {
withboobs 0:851be67e4df5 33 call_htpa = 1;
withboobs 0:851be67e4df5 34 }
withboobs 0:851be67e4df5 35
withboobs 0:851be67e4df5 36
withboobs 0:851be67e4df5 37 int main()
withboobs 0:851be67e4df5 38 {
withboobs 0:851be67e4df5 39 bool printme=0, print_labels=0;
withboobs 0:851be67e4df5 40 uint8_t j;
withboobs 0:851be67e4df5 41 int16_t i;
withboobs 0:851be67e4df5 42
withboobs 0:851be67e4df5 43 led_green = 1; // turn on LED until initialization is complete
withboobs 0:851be67e4df5 44
withboobs 0:851be67e4df5 45 pc.baud(BAUDRATE);
withboobs 0:851be67e4df5 46
withboobs 0:851be67e4df5 47 wait_ms(100);
withboobs 0:851be67e4df5 48
withboobs 0:851be67e4df5 49 h.init();
withboobs 0:851be67e4df5 50 wait_ms(HTPA_DT_MS);
withboobs 0:851be67e4df5 51 h.PU(1);
withboobs 0:851be67e4df5 52
withboobs 0:851be67e4df5 53 h.start();
withboobs 0:851be67e4df5 54 h.proc = PROC;
withboobs 0:851be67e4df5 55
withboobs 0:851be67e4df5 56 wait_ms(HTPA_DT_MS);
withboobs 0:851be67e4df5 57
withboobs 0:851be67e4df5 58 led_green = 0; // initializaiton complete
withboobs 0:851be67e4df5 59
withboobs 0:851be67e4df5 60 // start ticker
withboobs 0:851be67e4df5 61 tick.attach(&tick_set_htpa_flag, (float) HTPA_DT_MS * 1e-3);
withboobs 0:851be67e4df5 62
withboobs 0:851be67e4df5 63 if (h.tn != TABLENUMBER)
withboobs 0:851be67e4df5 64 {
withboobs 0:851be67e4df5 65 pc.printf("TN=%d does not match the interpolation table %d\n", h.tn, TABLENUMBER);
withboobs 0:851be67e4df5 66 pc.printf("Cannot continue!\n");
withboobs 0:851be67e4df5 67 while (1);
withboobs 0:851be67e4df5 68 }
withboobs 0:851be67e4df5 69
withboobs 0:851be67e4df5 70 while (1)
withboobs 0:851be67e4df5 71 {
withboobs 0:851be67e4df5 72 /* talk to me! */
withboobs 0:851be67e4df5 73 if (pc.readable())
withboobs 0:851be67e4df5 74 {
withboobs 0:851be67e4df5 75 char c = pc.getc();
withboobs 0:851be67e4df5 76 if (printme)
withboobs 0:851be67e4df5 77 {
withboobs 0:851be67e4df5 78 switch (c)
withboobs 0:851be67e4df5 79 {
withboobs 0:851be67e4df5 80 case 'p':
withboobs 0:851be67e4df5 81 printme=1;
withboobs 0:851be67e4df5 82 break;
withboobs 0:851be67e4df5 83
withboobs 0:851be67e4df5 84 case 'q':
withboobs 0:851be67e4df5 85 printme=0;
withboobs 0:851be67e4df5 86 break;
withboobs 0:851be67e4df5 87 }
withboobs 0:851be67e4df5 88 continue;
withboobs 0:851be67e4df5 89 }
withboobs 0:851be67e4df5 90
withboobs 0:851be67e4df5 91 switch (c)
withboobs 0:851be67e4df5 92 {
withboobs 0:851be67e4df5 93 case '?':
withboobs 0:851be67e4df5 94 pc.printf(FIRMWARE "\n");
withboobs 0:851be67e4df5 95 break;
withboobs 0:851be67e4df5 96
withboobs 0:851be67e4df5 97 case 'c':
withboobs 0:851be67e4df5 98 /* complete conversion to dK */
withboobs 0:851be67e4df5 99 h.proc = HTPA_PROC_CONVERT | HTPA_PROC_ELOFFS | HTPA_PROC_THOFFS;
withboobs 0:851be67e4df5 100 break;
withboobs 0:851be67e4df5 101
withboobs 0:851be67e4df5 102 case 'o':
withboobs 0:851be67e4df5 103 /* raw readings compensated by electric and thermal offsets */
withboobs 0:851be67e4df5 104 h.proc = HTPA_PROC_ELOFFS | HTPA_PROC_THOFFS;
withboobs 0:851be67e4df5 105 break;
withboobs 0:851be67e4df5 106
withboobs 0:851be67e4df5 107 case 'r':
withboobs 0:851be67e4df5 108 /* raw readings */
withboobs 0:851be67e4df5 109 h.proc = HTPA_PROC_RAW;
withboobs 0:851be67e4df5 110 break;
withboobs 0:851be67e4df5 111
withboobs 0:851be67e4df5 112 case 'd':
withboobs 0:851be67e4df5 113 if (print_labels)
withboobs 0:851be67e4df5 114 pc.printf("adc=", h.mbit);
withboobs 0:851be67e4df5 115 pc.printf("%x,", h.mbit);
withboobs 0:851be67e4df5 116 if (print_labels)
withboobs 0:851be67e4df5 117 pc.printf("bias=");
withboobs 0:851be67e4df5 118 pc.printf("%x,", h.bias);
withboobs 0:851be67e4df5 119 if (print_labels)
withboobs 0:851be67e4df5 120 pc.printf("clk=");
withboobs 0:851be67e4df5 121 pc.printf("%x,", h.clk);
withboobs 0:851be67e4df5 122 if (print_labels)
withboobs 0:851be67e4df5 123 pc.printf("bpa=");
withboobs 0:851be67e4df5 124 pc.printf("%x,", h.bpa);
withboobs 0:851be67e4df5 125 if (print_labels)
withboobs 0:851be67e4df5 126 pc.printf("pu=");
withboobs 0:851be67e4df5 127 pc.printf("%x,", h.pu);
withboobs 0:851be67e4df5 128 if (print_labels)
withboobs 0:851be67e4df5 129 pc.printf("tn=");
withboobs 0:851be67e4df5 130 pc.printf("%x,", h.tn);
withboobs 0:851be67e4df5 131 if (print_labels)
withboobs 0:851be67e4df5 132 pc.printf("PixCmin=");
withboobs 0:851be67e4df5 133 pc.printf("%f,", h.PixCmin);
withboobs 0:851be67e4df5 134 if (print_labels)
withboobs 0:851be67e4df5 135 pc.printf("PixCmax=");
withboobs 0:851be67e4df5 136 pc.printf("%f,", h.PixCmax);
withboobs 0:851be67e4df5 137 if (print_labels)
withboobs 0:851be67e4df5 138 pc.printf("epsilon=");
withboobs 0:851be67e4df5 139 pc.printf("%d,", h.epsilon);
withboobs 0:851be67e4df5 140 if (print_labels)
withboobs 0:851be67e4df5 141 pc.printf("gradScale=");
withboobs 0:851be67e4df5 142 pc.printf("%d,", h.gradScale);
withboobs 0:851be67e4df5 143 if (print_labels)
withboobs 0:851be67e4df5 144 pc.printf("PTATgrad=");
withboobs 0:851be67e4df5 145 pc.printf("%f,", h.PTATgrad);
withboobs 0:851be67e4df5 146 if (print_labels)
withboobs 0:851be67e4df5 147 pc.printf("PTAToffs=");
withboobs 0:851be67e4df5 148 pc.printf("%f\n", h.PTAToffs);
withboobs 0:851be67e4df5 149 break;
withboobs 0:851be67e4df5 150
withboobs 0:851be67e4df5 151 case 't':
withboobs 0:851be67e4df5 152 if (print_labels)
withboobs 0:851be67e4df5 153 pc.printf("Ta_dK=");
withboobs 0:851be67e4df5 154 pc.printf("%d\n", h.Ta_dK);
withboobs 0:851be67e4df5 155 break;
withboobs 0:851be67e4df5 156
withboobs 0:851be67e4df5 157 case 'l':
withboobs 0:851be67e4df5 158 print_labels=1;
withboobs 0:851be67e4df5 159 break;
withboobs 0:851be67e4df5 160
withboobs 0:851be67e4df5 161 case 's':
withboobs 0:851be67e4df5 162 print_labels=0;
withboobs 0:851be67e4df5 163 break;
withboobs 0:851be67e4df5 164
withboobs 0:851be67e4df5 165 case 'p':
withboobs 0:851be67e4df5 166 printme=1;
withboobs 0:851be67e4df5 167 break;
withboobs 0:851be67e4df5 168
withboobs 0:851be67e4df5 169 case 'q':
withboobs 0:851be67e4df5 170 printme=0;
withboobs 0:851be67e4df5 171 break;
withboobs 0:851be67e4df5 172 } // switch
withboobs 0:851be67e4df5 173 }
withboobs 0:851be67e4df5 174 if (call_htpa)
withboobs 0:851be67e4df5 175 {
withboobs 0:851be67e4df5 176 call_htpa=0;
withboobs 0:851be67e4df5 177
withboobs 0:851be67e4df5 178 led_green = 1;
withboobs 0:851be67e4df5 179 h.readb();
withboobs 0:851be67e4df5 180 led_green = 0;
withboobs 0:851be67e4df5 181
withboobs 0:851be67e4df5 182 if (h.available)
withboobs 0:851be67e4df5 183 {
withboobs 0:851be67e4df5 184 h.apply_offsets();
withboobs 0:851be67e4df5 185
withboobs 0:851be67e4df5 186 if (printme)
withboobs 0:851be67e4df5 187 {
withboobs 0:851be67e4df5 188 if (print_labels)
withboobs 0:851be67e4df5 189 pc.printf("data=");
withboobs 0:851be67e4df5 190 uint16_t * data_ptr = (uint16_t *) h.Data;
withboobs 0:851be67e4df5 191 for (i=0; i<32; i++)
withboobs 0:851be67e4df5 192 {
withboobs 0:851be67e4df5 193 for (j=0; j<32; j++)
withboobs 0:851be67e4df5 194 {
withboobs 0:851be67e4df5 195 if (!print_labels)
withboobs 0:851be67e4df5 196 {
withboobs 0:851be67e4df5 197 if (i==0 && j==0)
withboobs 0:851be67e4df5 198 pc.printf("S%04x", data_ptr[32*i + j]);
withboobs 0:851be67e4df5 199 else
withboobs 0:851be67e4df5 200 pc.printf("%04x", data_ptr[32*i + j]);
withboobs 0:851be67e4df5 201 }
withboobs 0:851be67e4df5 202 else
withboobs 0:851be67e4df5 203 pc.printf("%04x", data_ptr[32*i + j]);
withboobs 0:851be67e4df5 204 }
withboobs 0:851be67e4df5 205 }
withboobs 0:851be67e4df5 206 if (print_labels)
withboobs 0:851be67e4df5 207 pc.printf("\n");
withboobs 0:851be67e4df5 208 else
withboobs 0:851be67e4df5 209 pc.printf("E\n");
withboobs 0:851be67e4df5 210
withboobs 0:851be67e4df5 211 } // if (printme)
withboobs 0:851be67e4df5 212
withboobs 0:851be67e4df5 213 } // if (h.available)
withboobs 0:851be67e4df5 214
withboobs 0:851be67e4df5 215 } // if (t.read_ms() ... )
withboobs 0:851be67e4df5 216
withboobs 0:851be67e4df5 217 } // while(1)
withboobs 0:851be67e4df5 218
withboobs 0:851be67e4df5 219 } // main