Shift Register Component Quirks

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

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?

0 Likes
1 Solution
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

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

View solution in original post

0 Likes
4 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

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

0 Likes
Anonymous
Not applicable

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.

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

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

0 Likes
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

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.

0 Likes