Generate the maximum sampling rate

Dependencies:   MAG31101 mbed

Committer:
mja054
Date:
Sat Feb 15 01:07:15 2014 +0000
Revision:
1:478b36058c92
Parent:
0:d62b58e30f71
Generate the maximum sampling rate

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mja054 0:d62b58e30f71 1 #include "mbed.h"
mja054 0:d62b58e30f71 2 #include "MMA8451Q.h"
mja054 0:d62b58e30f71 3 #include "MAG3110.h"
mja054 0:d62b58e30f71 4 #include "TSISensor.h"
mja054 0:d62b58e30f71 5
mja054 0:d62b58e30f71 6 #define I2C0_SDA PTE25
mja054 0:d62b58e30f71 7 #define I2C0_SCL PTE24
mja054 0:d62b58e30f71 8 #define MMA8451_I2C_ADDRESS (0x1d<<1)
mja054 0:d62b58e30f71 9 #define MAG3110_I2C_ADDRESS (0x0E<<1)
mja054 0:d62b58e30f71 10 #define LIGHT_SENSOR_PIN PTE22
mja054 0:d62b58e30f71 11 #define COUNT 1000
mja054 0:d62b58e30f71 12
mja054 0:d62b58e30f71 13 Serial pc_sr(USBTX, USBRX);
mja054 0:d62b58e30f71 14 MMA8451Q acc_sr(I2C0_SDA, I2C0_SCL, MMA8451_I2C_ADDRESS);
mja054 0:d62b58e30f71 15 MAG3110 mag_sr(I2C0_SDA, I2C0_SCL, MAG3110_I2C_ADDRESS);
mja054 0:d62b58e30f71 16 Timer timer_sr;
mja054 0:d62b58e30f71 17 TSISensor tsi_sr;
mja054 0:d62b58e30f71 18 AnalogIn lightSensor_sr(PTE22);
mja054 0:d62b58e30f71 19
mja054 0:d62b58e30f71 20 void light(int count)
mja054 0:d62b58e30f71 21 {
mja054 0:d62b58e30f71 22 int i = 0;
mja054 0:d62b58e30f71 23
mja054 0:d62b58e30f71 24 while (i < count) {
mja054 0:d62b58e30f71 25 lightSensor_sr.read();
mja054 0:d62b58e30f71 26 i++;
mja054 0:d62b58e30f71 27 }
mja054 0:d62b58e30f71 28 }
mja054 0:d62b58e30f71 29
mja054 0:d62b58e30f71 30 void touch(int count)
mja054 0:d62b58e30f71 31 {
mja054 0:d62b58e30f71 32 int i = 0;
mja054 0:d62b58e30f71 33 while(i < count) {
mja054 0:d62b58e30f71 34 tsi_sr.readPercentage();
mja054 0:d62b58e30f71 35 i++;
mja054 0:d62b58e30f71 36 }
mja054 0:d62b58e30f71 37 }
mja054 0:d62b58e30f71 38
mja054 0:d62b58e30f71 39 void magnetometer(int count)
mja054 0:d62b58e30f71 40 {
mja054 0:d62b58e30f71 41 int i = 0;
mja054 0:d62b58e30f71 42
mja054 0:d62b58e30f71 43 while(i < count) {
mja054 0:d62b58e30f71 44 mag_sr.readVal(MAG_OUT_X_MSB);
mja054 0:d62b58e30f71 45 mag_sr.readVal(MAG_OUT_Y_MSB);
mja054 0:d62b58e30f71 46 mag_sr.readVal(MAG_OUT_Z_MSB);
mja054 0:d62b58e30f71 47 i++;
mja054 0:d62b58e30f71 48 }
mja054 0:d62b58e30f71 49 }
mja054 0:d62b58e30f71 50
mja054 0:d62b58e30f71 51 void accelerometer(int count)
mja054 0:d62b58e30f71 52 {
mja054 0:d62b58e30f71 53 int i = 0;
mja054 0:d62b58e30f71 54
mja054 0:d62b58e30f71 55 while (i < 1000) {
mja054 0:d62b58e30f71 56 acc_sr.getAccX();
mja054 0:d62b58e30f71 57 acc_sr.getAccY();
mja054 0:d62b58e30f71 58 acc_sr.getAccZ();
mja054 0:d62b58e30f71 59 i++;
mja054 0:d62b58e30f71 60 }
mja054 0:d62b58e30f71 61 }
mja054 0:d62b58e30f71 62
mja054 0:d62b58e30f71 63 void max_sample_rate(int count)
mja054 0:d62b58e30f71 64 {
mja054 0:d62b58e30f71 65 int i = 0;
mja054 0:d62b58e30f71 66
mja054 0:d62b58e30f71 67 while (i < count) {
mja054 0:d62b58e30f71 68 acc_sr.getAccX();
mja054 0:d62b58e30f71 69 acc_sr.getAccY();
mja054 0:d62b58e30f71 70 acc_sr.getAccZ();
mja054 0:d62b58e30f71 71
mja054 0:d62b58e30f71 72 mag_sr.readVal(MAG_OUT_X_MSB);
mja054 0:d62b58e30f71 73 mag_sr.readVal(MAG_OUT_Y_MSB);
mja054 0:d62b58e30f71 74 mag_sr.readVal(MAG_OUT_Z_MSB);
mja054 0:d62b58e30f71 75
mja054 0:d62b58e30f71 76 lightSensor_sr.read();
mja054 0:d62b58e30f71 77
mja054 0:d62b58e30f71 78 tsi_sr.readPercentage();
mja054 0:d62b58e30f71 79
mja054 0:d62b58e30f71 80 i++;
mja054 0:d62b58e30f71 81 }
mja054 0:d62b58e30f71 82 }
mja054 0:d62b58e30f71 83
mja054 0:d62b58e30f71 84 int main() {
mja054 0:d62b58e30f71 85 int t1, t2;
mja054 0:d62b58e30f71 86
mja054 0:d62b58e30f71 87 // while (true) {
mja054 0:d62b58e30f71 88 timer_sr.reset();
mja054 0:d62b58e30f71 89
mja054 0:d62b58e30f71 90 // Accelerometer
mja054 0:d62b58e30f71 91 timer_sr.start();
mja054 0:d62b58e30f71 92 t1 = timer_sr.read_ms();
mja054 0:d62b58e30f71 93 accelerometer(COUNT);
mja054 0:d62b58e30f71 94 t2 = timer_sr.read_ms();
mja054 0:d62b58e30f71 95 timer_sr.stop();
mja054 0:d62b58e30f71 96 pc_sr.printf("Time to sample acceleromter sensor 1000times = %dms\n", t2 - t1);
mja054 0:d62b58e30f71 97
mja054 0:d62b58e30f71 98 timer_sr.reset();
mja054 0:d62b58e30f71 99
mja054 0:d62b58e30f71 100 // magnetometer
mja054 0:d62b58e30f71 101 timer_sr.start();
mja054 0:d62b58e30f71 102 t1 = timer_sr.read_ms();
mja054 0:d62b58e30f71 103 magnetometer(COUNT);
mja054 0:d62b58e30f71 104 t2 = timer_sr.read_ms();
mja054 0:d62b58e30f71 105 timer_sr.stop();
mja054 0:d62b58e30f71 106 pc_sr.printf("Time to sample magnetometer sensor 1000times = %dms\n", t2 - t1);
mja054 0:d62b58e30f71 107
mja054 0:d62b58e30f71 108 timer_sr.reset();
mja054 0:d62b58e30f71 109
mja054 0:d62b58e30f71 110 // light
mja054 0:d62b58e30f71 111 timer_sr.start();
mja054 0:d62b58e30f71 112 t1 = timer_sr.read_ms();
mja054 0:d62b58e30f71 113 light(COUNT);
mja054 0:d62b58e30f71 114 t2 = timer_sr.read_ms();
mja054 0:d62b58e30f71 115 timer_sr.stop();
mja054 0:d62b58e30f71 116 pc_sr.printf("Time to sample light sensor 1000times = %dms\n", t2 - t1);
mja054 0:d62b58e30f71 117
mja054 0:d62b58e30f71 118 timer_sr.reset();
mja054 0:d62b58e30f71 119
mja054 0:d62b58e30f71 120 // touch
mja054 0:d62b58e30f71 121 timer_sr.start();
mja054 0:d62b58e30f71 122 t1 = timer_sr.read_ms();
mja054 0:d62b58e30f71 123 touch(COUNT);
mja054 0:d62b58e30f71 124 t2 = timer_sr.read_ms();
mja054 0:d62b58e30f71 125 timer_sr.stop();
mja054 0:d62b58e30f71 126 pc_sr.printf("Time to sample touch sensor 1000times = %dms\n", t2 - t1);
mja054 0:d62b58e30f71 127
mja054 0:d62b58e30f71 128 timer_sr.reset();
mja054 0:d62b58e30f71 129
mja054 0:d62b58e30f71 130 // All
mja054 0:d62b58e30f71 131 timer_sr.start();
mja054 0:d62b58e30f71 132 t1 = timer_sr.read_ms();
mja054 0:d62b58e30f71 133 max_sample_rate(COUNT);
mja054 0:d62b58e30f71 134 t2 = timer_sr.read_ms();
mja054 0:d62b58e30f71 135 timer_sr.stop();
mja054 0:d62b58e30f71 136 pc_sr.printf("Time to sample all sensors 1000times = %dms\n", t2 - t1);
mja054 0:d62b58e30f71 137 wait(1);
mja054 0:d62b58e30f71 138 // }
mja054 0:d62b58e30f71 139
mja054 0:d62b58e30f71 140 }