Content originally posted in LPCWare by raimond on Sat Mar 12 01:40:24 MST 2011
Hi all,
Anybody knows about any issue about GPIO input pin reading on an interrupt? I have an application which need a frequency meter. The frequency is measured first sampling the input pin on a timer interrupt, detecting the edges by software, and then, the counter is reported to the second, on another timer interrupt.
The issue: I always have a few additional edges detected, for example, at 100Hz signal I have 100-106 Hz measured, not constant. Never 99 !
I suspected the gpio input not having schmitt-trigger driver, I added an external schmitt-trigger, no luck.
Frequency sampling: 10kHz. Input pin: P1.0. With P1.1 the same.
My application is a very mature one, I have done it on a Rabbit2000, Z8encore, and now I want to port it on an LPC1756. On previous micros I always got 100Hz sharp, not the LPC1756 case :(. I even have done an ATmega64 test, 100Hz sharp again.
I'm going to loose my confidence about the LPC17xx.
By the way, I use a good 12MHz crystal, and I'm working at 12Mhz without PLL. Pclk is 3MHz.
I have done many things, using the same timer for scanning/second reporting, using timer0, timer1, RIT..., disabling ints, enabling ints, using the input in all four modes...
By the way, when scanning at 400Hz, I get the 100Hz indeed, but there's no use, because I have to detect frequencies till 4kHz.
Any ideas?