使用cyc8kit-050,我试图复用两个模拟输入和一个adc_sar有两通道输入样本去单独的阵列。披露:我有一个开放的情况下对这两周,但唯一的反应,我是蹩脚的例子,一个单一的模拟输入引脚发送200样本array1然后200样本array2使用两个TDS。那不是我需要做的。我需要输入一个样本,从样本输入B…重复直到2040样品收集在每个阵列(dma_a [ ] [ ] dma_b 2040年和2040年)。后来我需要时间使样品在FIR滤波器(未显示在这个简化版)。我的问题是,我似乎只写每个数组的第一个元素--最好的。
在TopDebug中,我使用LUT来选择MUX输入。我用定时器产生中断的时候,我们有4080样品。每个EOC倒计时定时器和产生一个新的SoC推迟1.5us通过PWM。我用两个TDS,每个数组一个。
在项目上,dma_done ISR是没有意义的。在另一个版本,我把一个样品使用一个TD单变量,然后用ISR加载到任何dma_a或dma_b。我检查看看我们的样品数为偶数或奇数确定阵列负载这样:
cy_isr_proto(dma_done);cy_isr(dma_done)/ /中断DMA做{如果处理程序(adc_count &;1)/ /看到如果数组偏移是偶数还是奇数dma_b [ adc_count ] = adc_read;/ /很奇怪——负载右声道的其他dma_a [ adc_count ] = adc_read;/它的即使负载左声道adc_count + +;/ / adc_count声明为挥发性dma_done_flag = 1;}
在(永远)环,我打印dma_a 1,2和3元素的值,在LCD上面一行。我打印DMAYB元素1,2,3在SENCOND行。注:为了测试这个你必须保证至少有一个通道的输入连接在cydwr P3 [ 6 ]电位器。请注意,在169170线的虚拟initaliza
tions不通过数据显示在液晶显示屏上覆盖有。
如果这种方法是不可行的,也许有人可以建议一个C++结构,它可以将每个其他元素从一个数组中分离出来,而不使用for循环中的CPU循环。单从阵列会:samplea [ 1 ],sampleb [ 1 ],samplea [ 2 ],sampleb [ 2 ],samplea [ 3 ],sampleb [ 3 ]…
但我的FIR滤波器将看到:samplea [ 1 ],samplea [ 2 ],samplea [ 3 ]…在通道A和SAMPLE B〔1〕中,SAMPPLB〔2〕,SAMPPLB〔3〕…B频道
工作空间捆绑。谢谢您。
MuxySaldDMA.CyWrk.CaseV01.Zip
2兆字节