nothing to say

Dependencies:   mbed

Committer:
withboobs
Date:
Wed Feb 21 18:13:45 2018 +0000
Revision:
0:ca29dd5bc1d8
nothing to say

Who changed what in which revision?

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