Frequency Counter Library. Only for mbed LPC1768, mbed LPC1114FN28, Nucleo-F401 and Nucleo-F411. No way to change pin assign.

Dependents:   Frequency_Counter Frequency_wind_speed_measure Frequency_counter_wind_speed

Please refer following page.
http://developer.mbed.org/users/kenjiArai/notebook/simple-frequency-counter/

Committer:
kenjiArai
Date:
Tue Aug 04 03:59:07 2020 +0000
Revision:
4:9a726b997366
Parent:
3:61bea8bfe404
modified for running on mbed-os-6.2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:83661d0d09c0 1 /*
kenjiArai 0:83661d0d09c0 2 * mbed Library program
kenjiArai 0:83661d0d09c0 3 * Frequency Counter Hardware relataed program
kenjiArai 0:83661d0d09c0 4 *
kenjiArai 4:9a726b997366 5 * Copyright (c) 2014,'20 Kenji Arai / JH1PJL
kenjiArai 4:9a726b997366 6 * http://www7b.biglobe.ne.jp/~kenjia/
kenjiArai 4:9a726b997366 7 * https://os.mbed.com/users/kenjiArai/
kenjiArai 4:9a726b997366 8 * Additional functions and modification
kenjiArai 4:9a726b997366 9 * started: October 18th, 2014
kenjiArai 4:9a726b997366 10 * Revised: August 4th, 2020
kenjiArai 0:83661d0d09c0 11 */
kenjiArai 0:83661d0d09c0 12
kenjiArai 0:83661d0d09c0 13 #ifndef MBED_F_COUNTER
kenjiArai 0:83661d0d09c0 14 #define MBED_F_COUNTER
kenjiArai 0:83661d0d09c0 15
kenjiArai 0:83661d0d09c0 16 #include "mbed.h"
kenjiArai 0:83661d0d09c0 17
kenjiArai 0:83661d0d09c0 18 /** Frequency Counter
kenjiArai 0:83661d0d09c0 19 *
kenjiArai 3:61bea8bfe404 20 * CAUTION: Direct access to the CPU Timer module!!
kenjiArai 3:61bea8bfe404 21 * No way to change pin assign and timer module,
kenjiArai 3:61bea8bfe404 22 * mbed LPC1768 -> p30,
kenjiArai 3:61bea8bfe404 23 * mbed LPC1114FN28 -> dp14,
kenjiArai 4:9a726b997366 24 * Nucleo F401RE,F411RE & F446RE -> PA_0/A0
kenjiArai 0:83661d0d09c0 25 *
kenjiArai 0:83661d0d09c0 26 * @code
kenjiArai 0:83661d0d09c0 27 * #include "mbed.h"
kenjiArai 0:83661d0d09c0 28 * #include "freq_counter.h"
kenjiArai 0:83661d0d09c0 29 *
kenjiArai 4:9a726b997366 30 * //F_COUNTER fc(p30); // for LPC1768
kenjiArai 3:61bea8bfe404 31 * //F_COUNTER fc(dp14); // for LPC1114
kenjiArai 4:9a726b997366 32 * F_COUNTER fc(PA_0); // for F401,F411,F446
kenjiArai 0:83661d0d09c0 33 *
kenjiArai 0:83661d0d09c0 34 * int main() {
kenjiArai 0:83661d0d09c0 35 * uint32_t frequency = 0;
kenjiArai 0:83661d0d09c0 36 *
kenjiArai 0:83661d0d09c0 37 * while(true) {
kenjiArai 4:9a726b997366 38 * freqency = fc.read_frequency(1000000); // gate time: 1 sec
kenjiArai 0:83661d0d09c0 39 * printf("%d [Hz]", frequency);
kenjiArai 0:83661d0d09c0 40 * }
kenjiArai 0:83661d0d09c0 41 * }
kenjiArai 0:83661d0d09c0 42 * @endcode
kenjiArai 0:83661d0d09c0 43 */
kenjiArai 0:83661d0d09c0 44
kenjiArai 0:83661d0d09c0 45 class F_COUNTER
kenjiArai 0:83661d0d09c0 46 {
kenjiArai 0:83661d0d09c0 47 public:
kenjiArai 0:83661d0d09c0 48 /** Configure data pin
kenjiArai 0:83661d0d09c0 49 * @param frequency counter input pin
kenjiArai 0:83661d0d09c0 50 */
kenjiArai 0:83661d0d09c0 51 F_COUNTER(PinName f_in);
kenjiArai 0:83661d0d09c0 52
kenjiArai 0:83661d0d09c0 53 /** Read measured frequency
kenjiArai 4:9a726b997366 54 * @param gate time (uSec) gate = 1sec -> set 1000000
kenjiArai 0:83661d0d09c0 55 * @return measured frequency
kenjiArai 0:83661d0d09c0 56 */
kenjiArai 4:9a726b997366 57 uint32_t read_frequency(uint32_t gate_time);
kenjiArai 0:83661d0d09c0 58
kenjiArai 0:83661d0d09c0 59 protected:
kenjiArai 0:83661d0d09c0 60 DigitalIn _pin;
kenjiArai 4:9a726b997366 61 Timer _t;
kenjiArai 0:83661d0d09c0 62
kenjiArai 0:83661d0d09c0 63 void initialize(void);
kenjiArai 4:9a726b997366 64 uint32_t rd_frq(uint32_t gate_time);
kenjiArai 0:83661d0d09c0 65
kenjiArai 0:83661d0d09c0 66 private:
kenjiArai 0:83661d0d09c0 67 uint32_t freq;
kenjiArai 0:83661d0d09c0 68
kenjiArai 0:83661d0d09c0 69 };
kenjiArai 0:83661d0d09c0 70
kenjiArai 0:83661d0d09c0 71 #endif // MBED_F_COUNTER