首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PIC24中的多任务处理

PIC24中的多任务处理
EN

Stack Overflow用户
提问于 2014-06-13 00:20:47
回答 3查看 339关注 0票数 1

我有一个基于PIC24的系统配备了24位,8通道模数转换器(谷歌MCP3914评估板的更多细节...)。我已经让电路板对所有8个通道进行采样,将数据存储在512x8缓冲区中,并在缓冲区已满时使用USB模块将数据传输到PC (这是通过不同的中断完成的)。

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

EN

回答 3

Stack Overflow用户

发布于 2014-06-13 02:16:30

只需通过轮询TXIF位而不使用中断,即可将信息传输到UART寄存器

代码语言:javascript
复制
while (PIR1.TXIF == 0);
TXREG = "the data you want to send";

这同样适用于ADC转换:如果您使用中断来启动/停止转换,只需轮询所需的位(ADON)即可。

根据您的PIC,TX位和AD位可能会有所不同。

这防止MCU进入中断服务例程并丢失3-4个采样。

票数 2
EN

Stack Overflow用户

发布于 2015-01-12 09:05:45

在PIC24中,可以为中断分配8个优先级中的一个。请参阅《系列参考手册》-> http://ww1.microchip.com/downloads/en/DeviceDoc/70000600d.pdf中的相应章节

票数 1
EN

Stack Overflow用户

发布于 2017-02-21 16:42:45

或者,您可以使用DMA通道,这非常方便。您可以将ADC配置为使用DMA,因此采样和馈送缓冲区不会占用任何CPU时间,我相信UART也是如此。

http://ww1.microchip.com/downloads/en/DeviceDoc/39742A.pdf http://esca.atomki.hu/PIC24/code_examples/docs/manuallyCreated/Appendix_H_ADC_with_DMA.pdf

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24189309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档