Very simple but enough accuracy "Frequency Counter". Using GPS 1PPS signal for 1sec gate. CPU is F746, F446 and F411.

Dependencies:   fc_GPS1PPS_f746_f4xx iSerial mbed

Please refer following.
/users/kenjiArai/notebook/frequency-counters/

Concept block are follows.
F746
/media/uploads/kenjiArai/block_diagram_fc_f746_wo_oven.pdf
F411&F446
/media/uploads/kenjiArai/block_diagram_fc_f411_wo_oven.pdf
Hardware Circuit(common F746,F446 and F411)
/media/uploads/kenjiArai/fc_f746ng_circuit.pdf
/media/uploads/kenjiArai/f746_fc_1.jpg

Committer:
kenjiArai
Date:
Wed Nov 16 13:22:00 2016 +0000
Revision:
0:da29cdc50643
Frequency counter program. Using GPS 1PPS signal. ; Frequency measurement range 0.01 Hz to Over 1.5GHz (F746 & F446)  or 0.8GHz.; This is very simple way but enough accuracy.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:da29cdc50643 1 /*
kenjiArai 0:da29cdc50643 2 * mbed Application program / GPS receiver control and 1PPS output
kenjiArai 0:da29cdc50643 3 *
kenjiArai 0:da29cdc50643 4 * Copyright (c) 2004,'09,'10,'16 Kenji Arai / JH1PJL
kenjiArai 0:da29cdc50643 5 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:da29cdc50643 6 * http://mbed.org/users/kenjiArai/
kenjiArai 0:da29cdc50643 7 * Created: March 28th, 2004 Kenji Arai
kenjiArai 0:da29cdc50643 8 * updated: July 25th, 2009 for PIC24USB
kenjiArai 0:da29cdc50643 9 * updated: January 16th, 2010 change to GPS-GM318
kenjiArai 0:da29cdc50643 10 * updated: April 24th, 2010 for mbed / NXP LPC1768
kenjiArai 0:da29cdc50643 11 * Revised: Nomeber 14th, 2016
kenjiArai 0:da29cdc50643 12 */
kenjiArai 0:da29cdc50643 13
kenjiArai 0:da29cdc50643 14 // Definition -----------------------------------------------------------------
kenjiArai 0:da29cdc50643 15 // GPS data selection & buffer size
kenjiArai 0:da29cdc50643 16 /* $GPGAA,hhmmss.sss,ddmm.mmmmmm,N,dddmm.mmmmmm,
kenjiArai 0:da29cdc50643 17 E,1,xx,xx.xx,xx.xxx,M,xx.xxx,M,s.ss,xxxx*sum<CR><LF>
kenjiArai 0:da29cdc50643 18 ex. $GPGGA,060306.00,4344.77894,N,14223.38857,
kenjiArai 0:da29cdc50643 19 E,2,11,0.9,128.4,M,28.8,M,5.0,0129*4C<CR><LF>
kenjiArai 0:da29cdc50643 20 # of data (ex.) = 81
kenjiArai 0:da29cdc50643 21 */
kenjiArai 0:da29cdc50643 22 #define SIZE_BUF_GGA 96
kenjiArai 0:da29cdc50643 23 /*
kenjiArai 0:da29cdc50643 24 $GPGSA,A,3,xx,xx,,,xx,xx,,,,,xx.x,xx.x,xx.x*sum<CR><LF>
kenjiArai 0:da29cdc50643 25 ex. $GPGSA,A,3,03,06,13,16,21,23,24,25,29,31,42,50,1.9,0.9,1.7*3C
kenjiArai 0:da29cdc50643 26 # of data (ex.) = 63
kenjiArai 0:da29cdc50643 27 */
kenjiArai 0:da29cdc50643 28 #define SIZE_BUF_GSA 80
kenjiArai 0:da29cdc50643 29 /*
kenjiArai 0:da29cdc50643 30 $GPGSV,x,x,xx*sum<CR><LF>
kenjiArai 0:da29cdc50643 31 ex. $GPGSV,3,1,12,03,39,225,47,06,55,217,48,13,21,314,48,16,74,342,50*76
kenjiArai 0:da29cdc50643 32 $GPGSV,3,2,12,21,33,095,50,23,32,280,50,24,18,049,42,25,12,315,43*7E
kenjiArai 0:da29cdc50643 33 $GPGSV,3,3,12,29,12,047,45,31,49,146,49,42,39,183,46,50,39,176,42*7C
kenjiArai 0:da29cdc50643 34 # of data (ex.) = 70
kenjiArai 0:da29cdc50643 35 */
kenjiArai 0:da29cdc50643 36 #define SIZE_BUF_GSV 80
kenjiArai 0:da29cdc50643 37 /*
kenjiArai 0:da29cdc50643 38 $GPRMC,hhmmss.sss,V,ddmm.mmmm,N,dddmm.mmmm,E,k.kkk,x.xx,ddmmyy,,,N*sum<CR><LF>
kenjiArai 0:da29cdc50643 39 ex. $GPRMC,060309.00,A,4344.77571,N,14223.38879,
kenjiArai 0:da29cdc50643 40 E,0.03,210.32,190808,06.2,W,D*51
kenjiArai 0:da29cdc50643 41 # of data (ex.) = 84
kenjiArai 0:da29cdc50643 42 */
kenjiArai 0:da29cdc50643 43 #define SIZE_BUF_RMC 96
kenjiArai 0:da29cdc50643 44 /*
kenjiArai 0:da29cdc50643 45 $GPVTG,xx.xx,T,,M,x.xx,N,x.xx,K,A*sum<CR><LF>
kenjiArai 0:da29cdc50643 46 ex. $GPVTG,210.32,T,204.30,M,0.03,N,0.06,K,D*3F
kenjiArai 0:da29cdc50643 47 # of data (ex.) = 43
kenjiArai 0:da29cdc50643 48 */
kenjiArai 0:da29cdc50643 49 #define SIZE_BUF_VTG 64
kenjiArai 0:da29cdc50643 50 /*
kenjiArai 0:da29cdc50643 51 $GPZDA,hhmmss.sss,dd,mmm,yyyy,hh,mm*sum<CR><LF>
kenjiArai 0:da29cdc50643 52 ex. $GPZDA,060307.00,19,08,2008,13,26*6E
kenjiArai 0:da29cdc50643 53 # of data (ex.) = 36
kenjiArai 0:da29cdc50643 54 */
kenjiArai 0:da29cdc50643 55 #define SIZE_BUF_ZDA 48
kenjiArai 0:da29cdc50643 56 /*
kenjiArai 0:da29cdc50643 57 $GPGLL,ddmm.mmmmmm,N,dddmm.mmmmmm,E,hhmmss.sss,V,D*sum<CR><LF>
kenjiArai 0:da29cdc50643 58 ex. $GPGLL,4344.77956,N,14223.38863,E,060305.00,A,D*61
kenjiArai 0:da29cdc50643 59 # of data (ex.) = 52
kenjiArai 0:da29cdc50643 60 */
kenjiArai 0:da29cdc50643 61 #define SIZE_BUF_GLL 64
kenjiArai 0:da29cdc50643 62
kenjiArai 0:da29cdc50643 63 #define ERR 0xff
kenjiArai 0:da29cdc50643 64
kenjiArai 0:da29cdc50643 65 //------------------------------------------------------------------------------
kenjiArai 0:da29cdc50643 66
kenjiArai 0:da29cdc50643 67 #ifndef _IGPSRCV_H
kenjiArai 0:da29cdc50643 68 #define _IGPSRCV_H
kenjiArai 0:da29cdc50643 69
kenjiArai 0:da29cdc50643 70 void gps_data_rcv(void); // make sure !! infinit loop on RTOS
kenjiArai 0:da29cdc50643 71 bool check_gps_is_okay(void);
kenjiArai 0:da29cdc50643 72 uint8_t check_gps_3d(void);
kenjiArai 0:da29cdc50643 73
kenjiArai 0:da29cdc50643 74 #endif /* _IGPSRCV_H */
kenjiArai 0:da29cdc50643 75