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/

freq_counter.h

Committer:
kenjiArai
Date:
2020-08-04
Revision:
4:9a726b997366
Parent:
3:61bea8bfe404

File content as of revision 4:9a726b997366:

/*
 * mbed Library program
 *      Frequency Counter Hardware relataed program
 *
 * Copyright (c) 2014,'20 Kenji Arai / JH1PJL
 *  http://www7b.biglobe.ne.jp/~kenjia/
 *  https://os.mbed.com/users/kenjiArai/
 *      Additional functions and modification
 *      started: October   18th, 2014
 *      Revised: August     4th, 2020
 */

#ifndef        MBED_F_COUNTER
#define        MBED_F_COUNTER

#include "mbed.h"

/** Frequency Counter
 *
 *  CAUTION: Direct access to the CPU Timer module!!
 *           No way to change pin assign and timer module,
 *      mbed LPC1768  -> p30,
 *      mbed LPC1114FN28 -> dp14,
 *      Nucleo F401RE,F411RE & F446RE -> PA_0/A0
 *
 * @code
 * #include "mbed.h"
 * #include "freq_counter.h"
 *
 * //F_COUNTER fc(p30);     // for LPC1768
 * //F_COUNTER fc(dp14);    // for LPC1114
 * F_COUNTER fc(PA_0);    // for F401,F411,F446
 *
 * int main() {
 *   uint32_t frequency = 0;
 *
 *   while(true) {
 *      freqency = fc.read_frequency(1000000);  // gate time: 1 sec
 *      printf("%d [Hz]", frequency);
 *   }
 * }
 * @endcode
 */

class F_COUNTER
{
public:
    /** Configure data pin
      * @param frequency counter input pin
      */
    F_COUNTER(PinName f_in);

    /** Read measured frequency
      * @param gate time (uSec) gate = 1sec -> set 1000000
      * @return measured frequency
      */
    uint32_t read_frequency(uint32_t gate_time);

protected:
    DigitalIn _pin;
    Timer _t;

    void initialize(void);
    uint32_t rd_frq(uint32_t gate_time);

private:
    uint32_t freq;

};

#endif  //  MBED_F_COUNTER