3 Replies Latest reply on May 9, 2011 4:49 PM by userc_44666

    Interrupts from ADC halts all other processes



      I'm trying to use an ADC to  sample audio from a mic (50 ksps) and store it in an array. The issue I'm having is that the interrupt I have connected to eoc seems to get called so often that the while(1) loop in main.c seems to halt altogether. I feel like the PSoC 5's processor should be fast enough to not have this issue, but am not sure what I'm doing wrong. 


      Any suggestions on what could be wrong or what could be a better approach to recording audio?





        • 1. Re: Interrupts from ADC halts all other processes

           I guess I'm okay with it since within the interrupt I can stop converting once I've reached my target number of samples. Now I'm just confused about how fast it reaches that point.


          I've configured the ADC to 10,000 SPS and it's set to halt once it's taken 50,000 samples, or what I'd assume would be 5 seconds worth. But for some reason it finishes after half a second. Am I missinterpreting what SPS stands for or does the ADC call EOC at a faster rate than the SPS it is set to?

          • 2. Re: Interrupts from ADC halts all other processes



            Did you ever consider to use the DMA? That would be a lot faster than interrupts.


            Which memory are you using to store your samples? If you use a 10-bit ADC and try to store 50000 samples you will definitely run out of internal memory and that can result in unexpected behavior.


            If you store the data to external memory, that write operation could be your bottleneck from your first question.


            Just some thoughts, Rob

            • 3. Re: Interrupts from ADC halts all other processes

              Yeah you're probably right that a DMA makes more sense. I will try using that instead. 


              As for how much audio I'm storing, it would be nice if I could keep something like 5-10 seconds of low quality audio. Besides keeping the sampling rate as low as possible do you have any other suggestions for how to store this much 8-bit audio?