Malexis 90640 sensor
Dependencies: mbed
Revision 3:d2e64ef64905, committed 2018-04-20
- 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
--- 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