PCM-PDM Interrupts OTA CE220960

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

cross mob
joshm
Level 4
Level 4
25 replies posted 50 sign-ins 10 questions asked

I am trying to add OTA functionality to my project, and I am using CE220960 upgradable stack as my base. I am adding my project's feature in piece by piece, but it seems like none of the interrupts I add into the project are working. I have been reading through the PSoC interrupt documentation looking for clues as to what I might might be doing wrong or what needs to be different for the OTA project, but I think I am doing everything I am supposed to.

Is there anything special I need to do for interrupt configuration on a DFU project? 

Creator 4.4, PDL 3.1.5, CE220960 

0 Likes
1 Solution
joshm
Level 4
Level 4
25 replies posted 50 sign-ins 10 questions asked

Disabling the LowPowerImplementation function allowed the PCM mic to work. Needed to add a check for an unhandled PCM interrupt before going to deep sleep. 

View solution in original post

0 Likes
4 Replies
lock attach
Attachments are accessible only for community members.
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello, 

Could you please elaborate more on your application ? In which project you are adding the interrupts ? Please make sure that interrupts( which are added) are enabled in the interrupts tab as shown in attached image. 

Thanks,

P Yugandhar. 

0 Likes
joshm
Level 4
Level 4
25 replies posted 50 sign-ins 10 questions asked

CMISIS NVIC_DisableIRQ Issue: https://github.com/ARM-software/CMSIS_5/issues/110

CMSIS Update: https://community.infineon.com/t5/Knowledge-Base-Articles/Including-CMSIS5-Library-in-a-PSoC-Creator...

I am using a PCM mic, and it seems the issue is caused by a delay in NVIC_DisableIRQ that is not compensated for in the version of CMSIS (v5.0.5) included with PDL 3.1.5.  (see CMSIS Issue forum discussion). Like in the PCM example project, I use NVIC_DisableIRQ in the interrupt handler and set a flag for the main loop to request PCM data using PDM_PCM_ReadFifo, but I am guessing an interrupt occurs while executing PDM_PCM_ReadFifo, and that is what causes the issue PCM crash. I have verified that interrupts are received after NVIC_DisableIRQ and before NVIC_EnableIRQ by incrementing an interrupt counter and printing it out in the main loop before NVIC_EnableIRQ. I am able to keep the PCM interrupts coming if I either add a 20ms delay in the main loop, or if I do not execute PDM_PCM_ReadFifo.

I am currently trying updating CMSIS using the procedure from the second link to see if that helps, but I am still having the issue. Not sure if totally sure I am doing the update correctly.

Any ideas to make this work without adding 20ms delay in my PCD data processing?

 

Edit: I was wrong. CMSIS v5.0.5 includes the fix discussed in the post from the link above. Looking for another solution to the problem.

0 Likes
joshm
Level 4
Level 4
25 replies posted 50 sign-ins 10 questions asked

Looks like I am getting 2 interrupts in a row before handling either of them, but it seems from the section "Writing an interrupt service routine" in (https://infineon.github.io/psoc6pdl/pdl_api_reference_manual/html/group__group__sysint.html) that this is expected and not a problem. 

I realized that the mic data is updating much slower in my non-OTA project where the mic is working. I am trying to figure out why it is so much slower now, and see if it will also fail when it updates faster. 

0 Likes
joshm
Level 4
Level 4
25 replies posted 50 sign-ins 10 questions asked

Disabling the LowPowerImplementation function allowed the PCM mic to work. Needed to add a check for an unhandled PCM interrupt before going to deep sleep. 

0 Likes