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:
Wed Oct 22 00:35:23 2014 +0000
Revision:
3:61bea8bfe404
Parent:
2:54c05b0a117a
Child:
4:9a726b997366
Added mbed LPC1114FN28 board based on Tetsuya Suzuki/fc1114 program

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 0:83661d0d09c0 5 * Copyright (c) 2014 Kenji Arai / JH1PJL
kenjiArai 0:83661d0d09c0 6 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:83661d0d09c0 7 * http://mbed.org/users/kenjiArai/
kenjiArai 0:83661d0d09c0 8 * Created: October 18th, 2014
kenjiArai 3:61bea8bfe404 9 * Revised: October 22nd, 2014
kenjiArai 0:83661d0d09c0 10 *
kenjiArai 0:83661d0d09c0 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 0:83661d0d09c0 12 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 0:83661d0d09c0 13 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 0:83661d0d09c0 14 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 0:83661d0d09c0 15 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 0:83661d0d09c0 16 */
kenjiArai 0:83661d0d09c0 17
kenjiArai 0:83661d0d09c0 18 #ifndef MBED_F_COUNTER
kenjiArai 0:83661d0d09c0 19 #define MBED_F_COUNTER
kenjiArai 0:83661d0d09c0 20
kenjiArai 0:83661d0d09c0 21 #include "mbed.h"
kenjiArai 0:83661d0d09c0 22
kenjiArai 0:83661d0d09c0 23 /** Frequency Counter
kenjiArai 0:83661d0d09c0 24 *
kenjiArai 3:61bea8bfe404 25 * CAUTION: Direct access to the CPU Timer module!!
kenjiArai 3:61bea8bfe404 26 * No way to change pin assign and timer module,
kenjiArai 3:61bea8bfe404 27 * mbed LPC1768 -> p30,
kenjiArai 3:61bea8bfe404 28 * mbed LPC1114FN28 -> dp14,
kenjiArai 3:61bea8bfe404 29 * Nucleo F401RE & Nucleo F411RE -> PA_0/A0
kenjiArai 0:83661d0d09c0 30 *
kenjiArai 0:83661d0d09c0 31 * @code
kenjiArai 0:83661d0d09c0 32 * #include "mbed.h"
kenjiArai 0:83661d0d09c0 33 * #include "freq_counter.h"
kenjiArai 0:83661d0d09c0 34 *
kenjiArai 2:54c05b0a117a 35 * F_COUNTER fc(p30); // for LPC1768
kenjiArai 3:61bea8bfe404 36 * //F_COUNTER fc(dp14); // for LPC1114
kenjiArai 2:54c05b0a117a 37 * //F_COUNTER fc(PA_0); // for F401 & F411
kenjiArai 0:83661d0d09c0 38 *
kenjiArai 0:83661d0d09c0 39 * int main() {
kenjiArai 0:83661d0d09c0 40 * uint32_t frequency = 0;
kenjiArai 0:83661d0d09c0 41 *
kenjiArai 0:83661d0d09c0 42 * while(true) {
kenjiArai 0:83661d0d09c0 43 * freqency = fc.read_frequency(1.0); // gate time: 1 sec
kenjiArai 0:83661d0d09c0 44 * printf("%d [Hz]", frequency);
kenjiArai 0:83661d0d09c0 45 * }
kenjiArai 0:83661d0d09c0 46 * }
kenjiArai 0:83661d0d09c0 47 * @endcode
kenjiArai 0:83661d0d09c0 48 */
kenjiArai 0:83661d0d09c0 49
kenjiArai 0:83661d0d09c0 50 class F_COUNTER
kenjiArai 0:83661d0d09c0 51 {
kenjiArai 0:83661d0d09c0 52 public:
kenjiArai 0:83661d0d09c0 53 /** Configure data pin
kenjiArai 0:83661d0d09c0 54 * @param frequency counter input pin
kenjiArai 0:83661d0d09c0 55 */
kenjiArai 0:83661d0d09c0 56 F_COUNTER(PinName f_in);
kenjiArai 0:83661d0d09c0 57
kenjiArai 0:83661d0d09c0 58 /** Read measured frequency
kenjiArai 0:83661d0d09c0 59 * @param gate time
kenjiArai 0:83661d0d09c0 60 * @return measured frequency
kenjiArai 0:83661d0d09c0 61 */
kenjiArai 0:83661d0d09c0 62 uint32_t read_frequency(float gate_time);
kenjiArai 0:83661d0d09c0 63
kenjiArai 0:83661d0d09c0 64 protected:
kenjiArai 0:83661d0d09c0 65 DigitalIn _pin;
kenjiArai 0:83661d0d09c0 66
kenjiArai 0:83661d0d09c0 67 void initialize(void);
kenjiArai 0:83661d0d09c0 68
kenjiArai 0:83661d0d09c0 69 private:
kenjiArai 0:83661d0d09c0 70 uint32_t freq;
kenjiArai 0:83661d0d09c0 71
kenjiArai 0:83661d0d09c0 72 };
kenjiArai 0:83661d0d09c0 73
kenjiArai 0:83661d0d09c0 74 #endif // MBED_F_COUNTER