I need to capture a bitstream into a buffer, and I was happy to find a shift register component that should have made this a 1-hour task. 24 hours later I'm still scratching my head. The interrupt output does not seem to work. and the DMA Wizard does not recognize the shift register component as a source.
The attached project illustrates the problems. Am I missing something, or are these a bugs?
Solved! Go to Solution.
Two notes: Set the isr1 and 2 to "Rising Edge", "derived" is used for FF blocks.
You should issue a isr_ClearPending() in the interrupt handler (in case it gets stuck)
The issue with the wizard is known, will probably corrected soon.
Bob
Two notes: Set the isr1 and 2 to "Rising Edge", "derived" is used for FF blocks.
You should issue a isr_ClearPending() in the interrupt handler (in case it gets stuck)
The issue with the wizard is known, will probably corrected soon.
Bob
Thanks for the tips. They may have helped, but I was still not getting interrupts on isr_2. I found the solution was to call
ShiftReg_1_GetIntStatus(); // for the side effect of clearing the register
in the isr_2 service routine. That's too bad because I wasn't planning on using an ISR at all. I guess I can just trigger the DMA from the store signal where it's connected in the .zip above.
For your purpose (except sw-counting) an interrupt is not required. Fine that you got it to work!
A tip for the next interrupt: You may use CY_ISR_PROTO() and CY_ISR() as described in the "System Reference Guide" accessable from Help menu in Creator. When using isr_StartEx() you can keep the interrupt handlers in your own files (ie. main.c) and you do not need to tweak in some generated files which may get overwritten accidentially.
Bob
This ap note discusses that and derived vs level triggered settings for ISR component. www.cypress.com/
Also the f() calls above described in detail in component datasheet.
Regards, Dana.