I deleted the UART and re-added it again using a different name, commenting out everything in my code that uses it - didn't help. It's absurd. The component is just there in the design without anything accessing it, internally or externaly.
Disabling the ISR component HELPED, even though right now nothing is connected externally to the UART. The ISR is supposed to be triggered only "On Byte Received".
Seems to have to do with interrupt. Two things come to my mind:
A bug in the interrupt handler
An interrupt priority issue.
Can you please post your complete project, so that we all can have a look at all of your settings. To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file.
Unfortunately, I can't send you the project. This is a proprietary design.
The interrupt wasn't enabled in the code (isr_Start() function not called). And there was nothing external connected to the PSoC to generate this interrupt anyway (was supposed to trigger on receiving a byte).
It is hard to comment without having a design. Try to submit it to Cypress for review (file a tech support case). I recently had weird design limitation error in project using only 32% of resources. Solution was to add extra dummy components (a clock and clock divider, not connected to anything). It somehow pushed optimization and helped to find better routing. One more try can be using a "dummy" component: http://www.cypress.com/forum/psoc-community-components/dummy-empty-component-digital-bus-routing Put this dummy component between UART and ISR. Sometimes this miraculously helps.
When you add the mischievous UART or isr component, can you make sure pin placements are locked ? So that existing routing probably remains same.
All the pins are always locked .
Tried the dummy component. Didn't help.
This UART is for debugging only. Eventually I used it without the ISR.
Now I disabled it again, because I don't need it for now.
Since you cannot provide us with your project you'll have to check for yourself for the "usual candidates" as
- dangling pointers
- warnings that are indeed errors
- indices out of limits
- clobbered stack
- and many others
an alternative to add an UART without "change" the component placement : the software Transmit UART.
This component is "software only" so the impact on your design could be limited.
There exists no impact from a UART to other components. Hundred of thousand PSoC implementations prove that. So, when something goes wrong there must be another reason. This has to be found and corrected.
Thanks for the idea. I needed a full UART for this design.