Pin Mapping, Contiguous vs Spanning

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.
CoLy_3905441
Level 2
Level 2
5 replies posted 10 sign-ins First solution authored

When is the Spanning option in the Pin component going to be given separate control from the Contiguous option?  Or, if it has been overlooked, can it be changed soon? 

It states in both the component and in old and new documentation that this change will occur in the future. The link below is to a workaround from a similar question asked a few years ago, but if the option is supposed to exist without a workaround, I would like to use that.  In my case, I am running two CAN controllers, hardware dedicated for each a single and dual wire CAN bus, on the same port, due to component spacing.  The dedicated RX pins are not contiguous, so contiguous can't be used.  Since they are on the same port, two separate pin components, each with interrupts, can't be used.  And the spanning option can't be enabled if a dedicated interrupt is to be used, since the interrupt is port specific. 

https://community.infineon.com/t5/PSoC-Creator-Designer/Unable-to-use-interrupts-from-non-adjacent-p...

4 Replies
Alakananda_BG
Moderator
Moderator
Moderator
50 likes received 250 sign-ins 250 replies posted

Hi @CoLy_3905441 ,

We have raised an internal ticket for the query and we are checking if the issue has been fixed or not.

Regards,

Alakananda

Any updates? 

0 Likes

Any updates? 

0 Likes
lock attach
Attachments are accessible only for community members.
CoLy_3905441
Level 2
Level 2
5 replies posted 10 sign-ins First solution authored

I made a shell of my project with the workaround from the included link.  I adjusted some stuff for a simpler implementation.  In the noted link, he adds a mask to clear all the interrupts.  In my case, I wanted to leave the interrupts separate.  I also use the prebuilt interrupts instead of building my own.  An addition from my original project is adding a 4-button DPAD with a separate enter button.  I want the DPAD to navigate and the enter to activate a specified function, so I want their interrupts to be cleared separately.  In conjunction, the CAN channels are separate, so I only want to send a message on the active network. 

Below, I took snippets from my code and boldened the important parts.  As well a screenshot of the TopDesign for those not wanting to download the entire project. 


int main(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */


/*Interrupt Start*/
Glb_isr_Start();
DPAD_isr_Start();

/*Set Interrupt for Non-Contiguous*/
dpad_SetInterruptMode(dpad_ent_0_INTR, dpad_ent_INTR_RISING);
RX_1_SetInterruptMode(RX_SW_0_INTR,RX_SW_INTR_FALLING);

for(;;)
{
}
}


/* `#START DPAD_isr_Interrupt` */
if(dpad_ClearInterrupt())
{
RX_isr_Start();
}

if(dpad_ent_ClearInterrupt())
{
led1_Write(~led1_Read());
}


/* `#START RX_isr_Interrupt` */
if(RX_1_ClearInterrupt())
{
// CAN_1_SendMsg();
}

if(RX_SW_ClearInterrupt())
{
// CAN_SW_SendMsg();
}

CyDelay(1);
led2_Write(~led2_Read());
RX_isr_Stop();