完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在开发用于dsPIC33EP512MU810微控制器的频率计数器驱动器,它使用定时器外围设备来计数参考信号,输入捕获模块来捕获数据信号的每个脉冲的参考计数,DMA外围设备来减少CPU参与处理IC e通风口。DMA ISR是用汇编语言编写的;它获得DMA缓冲区中连续条目之间的差别,并将它们全部加起来(用一些额外的代码处理必须传播到下一个缓冲区中的每个缓冲区的最后一个条目)。然而,由于DMA缓冲器是在DMA存储器中,所以它们通过使用DSRPAG寄存器的EDSScript生成来访问。处理指针递增的代码比我想象的要复杂一些。汇编语言模块有一个.h文件,它声明高级逻辑驱动程序用来访问其例程和数据的接口。该文件包含两个语句,用于指定ISR期望的DMA缓冲区。逻辑驱动程序相应地定义DMA缓冲区。查看程序集指令,可以清楚地看到,如果每个DMA缓冲区都对齐,那么可以删除其中的四个,这样就不会跨越页面b。好的,那也行。然而,由于额外的属性是汇编语言模块的所有要求,所以最好将它们包含在DMA缓冲区类型的定义中,而不是依赖于开发人员知道并记住包括它们。我知道有一些属性(比如alignd)可以添加到结构和联合类型,但是属性也可以添加到使用typedef关键字声明的自定义类型吗?例如,编译器允许以下操作而没有错误或警告,但是MAP文件显示数据没有放在DMA内存区域中。是否有一些方法来声明类型,以便对任何类型的变量强制执行必要的属性?
|
|
相关推荐
3个回答
|
|
我在PIC24EP512GU810上有类似的代码。我不能通过拖动Type来做任何事情,导致缓冲区不在DMA RAM中:
|
|
|
|
伟大的!我看到了不同之处:您在TyPulf中也包含了yxEdssx修饰符。这对我也适用。谢谢您。
|
|
|
|
这个芯片上只有一个EDSPAGE。如果你不改变SRPAG(例如Flash访问)和DSSWPAG,这给了你平坦的空间。
|
|
|
|
只有小组成员才能发言,加入小组>>
5237 浏览 9 评论
2026 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3201 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
771浏览 1评论
659浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
589浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
671浏览 0评论
571浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 01:29 , Processed in 1.155473 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号