nothing to say

Dependencies:   mbed

Revision:
0:ca29dd5bc1d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Feb 21 18:13:45 2018 +0000
@@ -0,0 +1,225 @@
+#include "mbed.h"
+
+/** 
+  * HTPA32x32dL2_1HiSiF5_0: TN=96
+  */
+#include "heimann32x32.h"
+
+#define FIRMWARE "eye_r_eye-v_1_7"
+
+//#define BAUDRATE 115200
+#define BAUDRATE 230400
+#define PROC     (HTPA_PROC_ELOFFS  | HTPA_PROC_THOFFS)
+//#define PROC     (HTPA_PROC_ELOFFS  | HTPA_PROC_THOFFS | HTPA_PROC_CONVERT)
+
+#if BAUDRATE == 230400
+    #define HTPA_DT_MS  35 
+#elif BAUDRATE == 115200
+    #define HTPA_DT_MS  100 
+#endif
+
+I2C i2c(I2C_SDA, I2C_SCL), i2ce(I2C_SDA, I2C_SCL);
+
+HTPA32x32 h = HTPA32x32( (I2C  *) &i2c,  (I2C  *) &i2ce);
+
+Serial pc(SERIAL_TX, SERIAL_RX);
+
+DigitalOut led_green(LED2);
+
+
+Timer t;
+
+Ticker tick;
+volatile bool call_htpa=0;
+void tick_set_htpa_flag( void ) 
+{
+    call_htpa = 1;
+}
+
+
+int main()
+{
+    bool printme=0, print_labels=0;
+    uint8_t j;
+    int16_t i;
+    
+    led_green = 1;    // turn on LED until initialization is complete
+
+    pc.baud(BAUDRATE);    
+
+    wait_ms(100);
+   
+    h.init();       
+    wait_ms(HTPA_DT_MS);
+    h.PU(1);
+    
+    h.start();
+    h.proc = PROC;
+    
+    wait_ms(HTPA_DT_MS);
+
+    led_green = 0;    // initializaiton complete
+    
+    // start ticker
+    tick.attach(&tick_set_htpa_flag, (float) HTPA_DT_MS * 1e-3);
+    
+    if (h.tn != TABLENUMBER)
+    {
+        pc.printf("TN=%d does not match the interpolation table %d\n", h.tn, TABLENUMBER);
+        pc.printf("Cannot continue!\n");
+        while (1);
+    }
+        
+    // start timer
+    t.start();
+    
+    while (1)
+    {
+        /* talk to me! */
+        if (pc.readable())
+        {
+            char c = pc.getc();
+            if (printme)
+            {
+                switch (c)
+                {
+                    case 'p':
+                        printme=1;
+                        break;
+                    
+                    case 'q':
+                        printme=0;
+                        break;
+                }
+                continue;
+            }
+
+            switch (c)
+            {
+                case '?':
+                    pc.printf(FIRMWARE "\n");
+                    break;                    
+                
+                case 'c':
+                    /* complete conversion to dK */
+                    h.proc = HTPA_PROC_CONVERT | HTPA_PROC_ELOFFS | HTPA_PROC_THOFFS;
+                    break;
+                    
+                case 'o':
+                    /* raw readings compensated by electric and thermal offsets */
+                    h.proc = HTPA_PROC_ELOFFS | HTPA_PROC_THOFFS;
+                    break;
+                
+                case 'r':
+                    /* raw readings */
+                    h.proc = HTPA_PROC_RAW;
+                    break;
+                    
+                case 'd':
+                    if (print_labels)
+                        pc.printf("adc=", h.mbit);
+                    pc.printf("%x,", h.mbit);
+                    if (print_labels)
+                        pc.printf("bias=");
+                    pc.printf("%x,", h.bias);
+                    if (print_labels)
+                        pc.printf("clk=");
+                    pc.printf("%x,", h.clk);
+                    if (print_labels)
+                        pc.printf("bpa=");
+                    pc.printf("%x,", h.bpa);
+                    if (print_labels)
+                        pc.printf("pu=");
+                    pc.printf("%x,", h.pu);
+                    if (print_labels)
+                        pc.printf("tn=");
+                    pc.printf("%x,", h.tn);
+                    if (print_labels)
+                        pc.printf("PixCmin=");
+                    pc.printf("%f,", h.PixCmin);
+                    if (print_labels)
+                        pc.printf("PixCmax=");
+                    pc.printf("%f,", h.PixCmax);
+                    if (print_labels)
+                        pc.printf("epsilon=");
+                    pc.printf("%d,", h.epsilon);
+                    if (print_labels)
+                        pc.printf("gradScale=");
+                    pc.printf("%d,", h.gradScale);
+                    if (print_labels)
+                        pc.printf("PTATgrad=");
+                    pc.printf("%f,", h.PTATgrad);
+                    if (print_labels)
+                        pc.printf("PTAToffs=");
+                    pc.printf("%f\n", h.PTAToffs);
+                    break;
+                    
+                case 't':
+                    if (print_labels)
+                        pc.printf("Ta_dK=");
+                    pc.printf("%d\n", h.Ta_dK);
+                    break;
+
+                case 'l':
+                    print_labels=1;
+                    break;
+                
+                case 's':
+                    print_labels=0;
+                    break;                    
+                    
+                case 'p':
+                    printme=1;
+                    break;
+                    
+                case 'q':
+                    printme=0;
+                    break;
+            } // switch
+        }
+        if (t.read_ms()>=HTPA_DT_MS)
+        {
+            t.reset(); 
+            
+            led_green = 1;
+            h.readb();
+            led_green = 0;
+            
+            if (h.available)
+            {
+                h.apply_offsets();
+                
+                if (printme)
+                {
+                    if (print_labels)
+                        pc.printf("data=");                    
+                    uint16_t * data_ptr = (uint16_t *) h.Data;
+                    for (i=0; i<32; i++) 
+                    {
+                        for (j=0; j<32; j++)
+                        {
+                            if (!print_labels)
+                            {
+                                if (i==0 && j==0)
+                                    pc.printf("S%04x", data_ptr[32*i + j]);
+                                else
+                                    pc.printf("%04x", data_ptr[32*i + j]);
+                            }
+                            else
+                                pc.printf("%04x", data_ptr[32*i + j]);
+                        }
+                    }
+                    if (print_labels)
+                        pc.printf("\n");
+                    else
+                        pc.printf("E\n");
+                
+                } // if (printme)
+                
+            } // if (h.available)
+        
+        } // if (t.read_ms() ... )
+        
+    } // while(1)
+
+} // main