Sensor sampling library

Committer:
Joseph_Penikis
Date:
Mon Feb 23 23:10:36 2015 +0000
Revision:
1:f9f0b92a9d7c
Parent:
0:eea8d19a7f6b
CURRENTLY BROKEN: NOT FUNCTIONING AS REQUIRED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Joseph_Penikis 0:eea8d19a7f6b 1 #ifndef SENSORS_H
Joseph_Penikis 0:eea8d19a7f6b 2 #define SENSORS_H
Joseph_Penikis 0:eea8d19a7f6b 3
Joseph_Penikis 0:eea8d19a7f6b 4 #define CHANNEL_1 0x01
Joseph_Penikis 0:eea8d19a7f6b 5 #define CHANNEL_2 0x02
Joseph_Penikis 0:eea8d19a7f6b 6
Joseph_Penikis 0:eea8d19a7f6b 7 #define CPU_CLOCK 48000000
Joseph_Penikis 0:eea8d19a7f6b 8
Joseph_Penikis 0:eea8d19a7f6b 9 /**
Joseph_Penikis 1:f9f0b92a9d7c 10 * Start SysTick
Joseph_Penikis 0:eea8d19a7f6b 11 */
Joseph_Penikis 1:f9f0b92a9d7c 12 extern "C" void start_systick();
Joseph_Penikis 0:eea8d19a7f6b 13
Joseph_Penikis 0:eea8d19a7f6b 14 /**
Joseph_Penikis 0:eea8d19a7f6b 15 * Measure the period observed on the sensor indicated by "sensor"
Joseph_Penikis 1:f9f0b92a9d7c 16 * TODO: Pin Routing
Joseph_Penikis 0:eea8d19a7f6b 17 */
Joseph_Penikis 1:f9f0b92a9d7c 18 extern "C" int measure_clock_cycles(int sensor, int samples);
Joseph_Penikis 0:eea8d19a7f6b 19
Joseph_Penikis 1:f9f0b92a9d7c 20 float measure_frequency(int sensor, int samples)
Joseph_Penikis 0:eea8d19a7f6b 21 {
Joseph_Penikis 0:eea8d19a7f6b 22 // Divide the number of cpu clock cycles by the number of measured periods of the measured waveform to
Joseph_Penikis 0:eea8d19a7f6b 23 // get the number of clock cycles per period
Joseph_Penikis 0:eea8d19a7f6b 24 int clock_cycles = measure_clock_cycles(sensor, samples) / samples;
Joseph_Penikis 0:eea8d19a7f6b 25
Joseph_Penikis 0:eea8d19a7f6b 26 // Divide CPU_CLOCK by the number of clock cycles to get the period
Joseph_Penikis 0:eea8d19a7f6b 27 return (CPU_CLOCK / (float)clock_cycles);
Joseph_Penikis 0:eea8d19a7f6b 28 }
Joseph_Penikis 0:eea8d19a7f6b 29
Joseph_Penikis 0:eea8d19a7f6b 30 #endif