PCNT THRES0/1 IRQ not trigging.
Posted: Sun May 24, 2020 1:51 pm
I've tried to use the THRES0/1 IRQ, but found a strange problem.
If I change the THRES0/1 value, the IRQ won't trigger until the counter value first has reached 0, then the set threshold value.
Ie
Set CNT = 0
Set H_LIM = 20
Count 5 pulses, so CNT = 5
Set THRES0 = 10
Count 5 pulses, so CNT = 10. I would expect an IRQ here, but don't get any.
Count 10 pulses. As CNT reaches 20 == H_LIM, it will be set to 0 instead. (And generate an IRQ.)
Count 10 pulses. So CNT = 10. This time, I do get the THRES0 IRQ.
Other ways to pass 0 will also work, like reseting the counter or using an up/down configuration and count past zero.
Am I doing something wrong? Is there any good workaround?
I would rather not reset the counter every time I want to set a new THRES0/1 value, since that would require a rather ugly cludge to fix the race conditions that can cause.
If I change the THRES0/1 value, the IRQ won't trigger until the counter value first has reached 0, then the set threshold value.
Ie
Set CNT = 0
Set H_LIM = 20
Count 5 pulses, so CNT = 5
Set THRES0 = 10
Count 5 pulses, so CNT = 10. I would expect an IRQ here, but don't get any.
Count 10 pulses. As CNT reaches 20 == H_LIM, it will be set to 0 instead. (And generate an IRQ.)
Count 10 pulses. So CNT = 10. This time, I do get the THRES0 IRQ.
Other ways to pass 0 will also work, like reseting the counter or using an up/down configuration and count past zero.
Am I doing something wrong? Is there any good workaround?
I would rather not reset the counter every time I want to set a new THRES0/1 value, since that would require a rather ugly cludge to fix the race conditions that can cause.