47 #define OPT_P_MAX 1000 75 "Usage: sudo ./freq_count_2 gpio ... [OPTION] ...\n" \
76 " -p value, sets pulses every p micros, %d-%d, TESTING only\n" \
77 " -r value, sets refresh period in deciseconds, %d-%d, default %d\n" \
78 " -s value, sets sampling rate in micros, %d-%d, default %d\n" \
80 "sudo ./freq_count_2 4 7 -r2 -s2\n" \
81 "Monitor gpios 4 and 7. Refresh every 0.2 seconds. Sample rate 2 micros.\n" \
89 void fatal(
int show_usage,
char *fmt, ...)
95 vsnprintf(buf,
sizeof(buf), fmt, ap);
98 fprintf(stderr,
"%s\n", buf);
100 if (show_usage)
usage();
111 while ((opt = getopt(argc, argv,
"p:r:s:")) != -1)
121 else fatal(1,
"invalid -p option (%d)", i);
129 else fatal(1,
"invalid -r option (%d)", i);
136 else fatal(1,
"invalid -s option (%d)", i);
149 static uint32_t state = 0;
150 uint32_t high, level;
159 for (s=0; s<numSamples; s++)
162 high = ((state ^ level) &
g_mask) & level;
175 int main(
int argc,
char *argv[])
177 int i, rest, g, wave_id,
mode;
189 for (i=rest; i<argc; i++)
192 if ((g>=0) && (g<32))
197 else fatal(1,
"%d is not a valid g_gpio number\n", g);
202 printf(
"Monitoring gpios");
204 printf(
"\nSample rate %d micros, refresh rate %d deciseconds\n",
247 printf(
" %d=%d",
g_gpio[i], count[i]);
static int g_gpio[MAX_GPIOS]
#define PI_WAVE_MODE_REPEAT
int gpioSetMode(unsigned gpio, unsigned mode)
int gpioSetGetSamplesFunc(gpioGetSamplesFunc_t f, uint32_t bits)
void samples(const gpioSample_t *samples, int numSamples)
uint32_t gpioDelay(uint32_t micros)
static volatile int g_pulse_count[MAX_GPIOS]
static int initOpts(int argc, char *argv[])
int gpioCfgClock(unsigned micros, unsigned peripheral, unsigned source)
int gpioWaveTxSend(unsigned wave_id, unsigned wave_mode)
void fatal(int show_usage, char *fmt,...)
int main(int argc, char *argv[])
static volatile int g_reset_counts
int gpioWaveAddGeneric(unsigned numPulses, gpioPulse_t *pulses)