I am implementing a Sigma Studio design and I have come across a problem with the value cross detection block.
In my application, one button is connected to one of the GPIOs of the ADAU1701.
This button is monitored and when it drives three different LEDs in this way:
the first time it is pressed LED1 turns on
the second time LED2 turns on
the third time LED3 turns on
the forth time LED1 turns on
and so on...
In order to succeed this I am using the value cross detection block in series with a pulse counter block.
The value cross detection block is set to 0. When the button is not pressed I get a non-zero positive value and when it is pressed I get a non-zero negative value.
My design looks like this:
my problem is that it seems that I am missing presses very frequently. I know this has nothing to do with the HW or the debounce time of the button because the first readback block on the left is always responsive to the presses and I can see it changing from positive to negative value every time I press.
However the second readback block (second arrow to the right) fails to monitor all the presses. Sometimes I can see it changing and others not.
I also placed a readback block right after the value cross detection block and I could see it only detect some of the presses and not all of them.
As the button interchanges between positive and negative values I would expect it to cross the zero point in every press and every release.
However the value cross detection block fails to detect that every time.
Any idea what could be the problem? I tried slewing in the button signal but it did not help.