完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,这是我的第一篇文章,我想自我介绍一下。我是迈克,我是一名来自荷兰的20岁EE学生。在这一刻,我正在研究我的毕业设计,这涉及到设计一个16 ^ 3 RGB LED显示屏。显示器的每个面板都由一些驱动逻辑和一个PIC32MX330F064H控制。PIC然后由一个主模块控制,一个覆盆子PI 2型号B。现在就看我的实际问题了。PIC32使用两个SPI模块,一个用于缓冲来自RPI2的动画数据,另一个用于将动画数据传送到TLC LED驱动器。这两个SPI模块都使用DMA通道来缓冲/传输数据。我为它编写的程序工作正常,除了一个DMA信道中断会在一段随机时间后停止工作。因此,我开始调查可能导致这个问题的原因。我的第一个DMA通道的源代码是这样的,请注意,我正在使用我自己的库函数来配置和设置DMA通道的标志:我的第二个DMA通道的源看起来像下面这样:发现两个DMA通道之一的CHBCIF标志未被清除。如果此标志未被清除,则不会出现新的DMA中断。因此,在我找到这个之后,我在清除了CbcIF标志之后,查看了我的函数是否某种程度上没有正确地清除它。经过广泛的测试,我得出结论,这不是问题。我甚至通过手动将比特设置为零来测试它,但是这种行为和以前完全一样。目前我有另一个理论可能导致我的问题,但是我不能证实这一点,因为我缺少一些关于中断的知识。我认为发生的事情如下。所有的DMA信道共享相同的信道中断标志(IFS2)。如果我们对这个代码进行分解,我们得到如下:如果我的理解是正确的(当我在MIPS指令集上的知识很差时,请记住我)四行相当于:加载内存地址(IFS2寄存器)到V1。D从地址位置V1+ 4176进入V0。在0位的8位插入0,将V0存储在地址位置V1+4176。我认为可能发生的是,如果另一个DMA信源(通道1)的中断标志被设置为“重写”,它将被“重写”。步骤2之后。在步骤2中,我们加载IFS2寄存器的寄存器值,而DMA1IF(或任何其他DMAXIF标志)标志仍然被清除。这意味着在步骤2中加载的半字将清除DMA1IF比特。这一位将保持清除,直到我们把它写回到寄存器中的第4步。这意味着,如果在步骤2和步骤4之间设置任何新的DMAxIF标志,那么它最终将被覆盖。现在我不能确认这是否正在发生,因为我不知道中断及其对应的中断标志是如何处理的。也许在我们正在清理另一个的时候(步骤2到4之间),甚至不可能设置一个中断。我希望有人能帮助阐明这个话题,如果有什么不清楚的地方,请发表评论,我会试着更详细地解释它。
|
|
相关推荐
4个回答
|
|
如果问题是我想的那样,请尝试在过程头文件中何处定义_IFS2_DMA0IF_MASK。在使用PIC32时,请记住始终使用SET、CLR和INV寄存器来设置、清除和转换SFR中的位,以避免由读-修改-写操作引起的这一问题。
|
|
|
|
是的,就像AsCH0866所说的那样。ReGAMEMPITS标记不是原子的(如您所注意到的),但是使用SET、CLR和IV偏移量是./Ruben。
|
|
|
|
由于MIPS是一个负载存储体系结构,所以读修改写操作本质上是Rice。为了避免这类问题,(几乎)每个硬件寄存器还具有三个用于原子操作的伴随SET、CLR和INV寄存器。无论出于什么原因,这在330数据表中的中断控制器寄存器映射中没有提到,但是其他外围设备也提到了它们。SET、CRL、IV寄存器本身在I/O端口部分(12.2)中被最好地记录。
|
|
|
|
好的,这是有道理的。然后,我将继续使用SET、CLR和IV寄存器。谢谢你们的快速响应!
|
|
|
|
只有小组成员才能发言,加入小组>>
5242 浏览 9 评论
2031 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3207 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2256 浏览 5 评论
778浏览 1评论
669浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
596浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
678浏览 0评论
577浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 18:58 , Processed in 1.380049 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号