Sounds like noise to me.... Try a schmidt trigger between what you are counting and the pic.
Sounds like noise to me.... Try a schmidt trigger between what you are counting and the pic.
Dave Purola,
N8NTA
EN82fn
If it was noise issue, why my code works perfectly?
The manual says with a 4MHz oscillator as you have, the pin is sampled every 20us which is way too slow for the fractional pulse durations you stated.
The different results can easily be explained since any low or high period could be entirely missed.
Your code is still pretty slow.
The fastest I can think of right now in PBP is this:
Then Count will be the number of pin changes.Code:newbitstate var bit oldbitstate var bit counter var word count var word duration var word newbitstate = 0 oldbitstate = 0 duration = 9000 ‘ set duration to sample the input count = 0 ‘ reset count for counter = 0 to duration newbitstate = portb.0 if newbitstate != oldbitstate then count = count + 1 endif oldbitstate = newbitstate next duration
To get the pulse count, rather than check in the routine and slow it down,
just divide Count by 2 at the end, to get the number of rising edges,
and if the remainder is 1, the duration ended while the port pin was high.
0.8ms=800us, so it fits very well![]()
lol I was reading ms as microseconds.
If your code works better than Count then use itI’d sure like to see a disassembly of Count in your loop though, which I don’t have the tools to do handy at the moment.
Bookmarks