Sensor sampling library
Sensors.h@1:f9f0b92a9d7c, 2015-02-23 (annotated)
- 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?
User | Revision | Line number | New 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 |