2014-06-12 50 views
1

我有一个装有24位8通道ADC(谷歌MCP3914评估板了解更多详细信息......)的基于PIC24的系统。 当缓冲区已满时(由不同的中断完成),我已经获得了所有8个通道的采样板,将数据存储在512x8缓冲区中,并使用USB模块将数据传输到PC。PIC24中的多任务处理

唯一的问题是,当MCU传输数据时(UART传输中断的优先级高于ADC读取中断的优先级),ADC不会采样数据,因此会有数据丢失(采样率约为500采样/秒) 。 有什么办法可以防止这种数据丢失?也许有些多任务处理?

回答

2

简单地将信息传送到UART寄存器不使用中断,但通过轮询位TXIF

while (PIR1.TXIF == 0); 
TXREG = "the data you want to send"; 

这同样适用于ADC转换:如果你使用的中断启动/停止转换,简单地轮询所需的位(ADON)和多数民众赞成它。

TX位和AD位可能因您的PIC而异。

这可以防止MCU进入中断服务程序并松开3-4个样本。

+1

为我工作,谢谢!我使用中断保持采样,但现在通过轮询完成传输,无中断... – Muhammad