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