Malexis 90640 sensor

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
withboobs
Date:
Fri Apr 20 17:24:23 2018 +0000
Parent:
2:44869d695501
Child:
4:b9ae79d80127
Commit message:
nothing to say;

Changed in this revision

MLX90640_I2C_Driver.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/MLX90640_I2C_Driver.cpp	Thu Apr 19 19:16:44 2018 +0000
+++ b/MLX90640_I2C_Driver.cpp	Fri Apr 20 17:24:23 2018 +0000
@@ -10,10 +10,9 @@
     i2c.stop();
 }
 
-int MLX90640_I2CRead_working(uint8_t slaveAddr,unsigned int startAddress,unsigned int nWordsRead, uint16_t *data)
+int MLX90640_I2CRead_working(uint8_t slaveAddr, uint16_t startAddress, uint16_t nWordsRead, uint16_t *data)
 {
     uint8_t sa;                           
-    int ack = 0;                               
     int cnt = 0;
     int i = 0;
     char cmd[2] = {0,0};
@@ -25,19 +24,14 @@
     cmd[0] = startAddress >> 8;
     cmd[1] = startAddress & 0x00FF;
     
-    //i2c.stop();
     wait_us(5);    
-    ack = i2c.write(sa, cmd, 2, 1);
-    
-    if (ack != 0x00)
+    if (i2c.write(sa, cmd, 2, 1))
     {
         return -1;
     }
              
     sa = sa | 0x01;
-    ack = i2c.read(sa, i2cData, 2*nWordsRead, 0);
-    
-    if (ack != 0x00)
+    if (i2c.read(sa, i2cData, 2*nWordsRead, 0))
     {
         return -1; 
     }          
@@ -55,39 +49,27 @@
 int MLX90640_I2CRead(uint8_t slaveAddr, uint16_t startAddress, uint16_t nWordsRead, uint16_t *data)
 {
     uint8_t sa;                           
-    uint16_t ack = 0;                               
     uint16_t cnt = 0;
-    uint16_t i = 0;
-    char cmd[2] = {0,0};
-    char * i2cData = (char *) data;
-    uint16_t *p;
+    char *i2cData = (char *) data;
     
-    p = data;
     sa = (slaveAddr << 1);
-    cmd[0] = startAddress >> 8;
-    cmd[1] = startAddress & 0x00FF;
+    startAddress = __REV16(startAddress);
     
-    //i2c.stop();
     wait_us(5);    
-    ack = i2c.write(sa, cmd, 2, 1);
-    
-    if (ack != 0x00)
+    if (i2c.write(sa, (char *) &startAddress, 2, 1))
     {
         return -1;
     }
              
     sa = sa | 0x01;
-    ack = i2c.read(sa, (char *)i2cData, nWordsRead<<1, 0);
-    
-    if (ack != 0x00)
+    if (i2c.read(sa, i2cData, nWordsRead<<1, 0))
     {
         return -1; 
     }          
-    //i2c.stop();   
     
-    for(i=0; i<nWordsRead; i++)
+    for(cnt=0; cnt < nWordsRead; cnt++)
     {
-        p[i] = __REV16(p[i]);
+        data[cnt] = __REV16(data[cnt]);
     }
     
     return 0;   
--- a/main.cpp	Thu Apr 19 19:16:44 2018 +0000
+++ b/main.cpp	Fri Apr 20 17:24:23 2018 +0000
@@ -5,8 +5,7 @@
 #define FRAMES_NUM 15
 #define TA_SHIFT 8
 
-#define FIRMWARE "eye_r_eye-mlx90640_32x24-v_1_0"
-
+#define FIRMWARE "eye_r_eye-mlx90640_32x24-v_1_5"
 Serial pc(USBTX, USBRX);                                                        // tx, rx, Virtual serial port over USB
 void PrintEEPROM(uint16_t *p);
 void PrintRawData(uint16_t *p);
@@ -19,7 +18,7 @@
 
 int main()
 {
-    uint8_t printme=0;
+    uint8_t printme=1;
     MLX90640_I2CFreqSet(1000);
     pc.baud(230400);
     paramsMLX90640 mlx90640;
@@ -34,15 +33,12 @@
 
     pEE = eeMLX90640;
     pFrame = mlx90640Frame;
-    MLX90640_SetRefreshRate(slaveAddress,2);
-    //status = MLX90640_SetResolution(slaveAddress[i],0x03);
-    //status = MLX90640_SetInterleavedMode(slaveAddress[i]);
-    MLX90640_SetChessMode(slaveAddress);
-    //printf("Reading EEPROM for MLX90640 device %d...\r\n",i+1);
+    MLX90640_SetRefreshRate(slaveAddress,1);
+    //MLX90640_SetResolution(slaveAddress,0x03);
+    MLX90640_SetInterleavedMode(slaveAddress);
     MLX90640_I2CFreqSet(400);
     MLX90640_DumpEE(slaveAddress, pEE);
     MLX90640_I2CFreqSet(1000);
-    //printf("Extracting parameters for MLX90640 device %d...\r\n",i+1);
     MLX90640_ExtractParameters(pEE, &mlx90640 );
 
     while (1) 
@@ -54,10 +50,6 @@
             {
                 switch (c)
                 {
-                    case 'p':
-                        printme=1;
-                        break;
-                    
                     case 'q':
                         printme=0;
                         break;
@@ -78,6 +70,18 @@
                 case '4':
                     MLX90640_SetRefreshRate(slaveAddress,4);
                     break;
+                    
+                case '5':
+                    MLX90640_SetRefreshRate(slaveAddress,5);
+                    break;
+                    
+                case 'c':
+                    MLX90640_SetChessMode(slaveAddress);                
+                    break;
+                    
+                case 'i':
+                    MLX90640_SetInterleavedMode(slaveAddress);
+                    break;
                    
                 case '?':
                     pc.printf(FIRMWARE "\n");
@@ -85,11 +89,12 @@
                     
                 case 'p':
                     printme=1;
-                    break;
+                    break;                    
                     
-                case 'q':
-                    printme=0;
-                    break;
+                default:
+                    pc.printf("?\n");
+                    break;                    
+                        
             } // switch
         }
 
--- a/mbed.bld	Thu Apr 19 19:16:44 2018 +0000
+++ b/mbed.bld	Fri Apr 20 17:24:23 2018 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/users/mbed_official/code/mbed/builds/994bdf8177cb
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/d1b4690b3f8b
\ No newline at end of file