完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
根据数据表,我使用的PIC24有一个96K字节的大SRAM。当用C30编程时,有多少可用于实际数据?我期待实现一个瞬态数据记录系统,使用一个24位A/D转换器,运行在50kSamples/s,记录时间将创建10-20kSamples/事件。当把这些样本存储在一个长的int数组中时,我想知道一个数组有多大,还能在数组里面索引吗?如果我们使用20 kSkices,我们看到80字节的RAM存储需求。这是可能的吗?录制完毕后,我将用FatFs作为驱动程序将整个数组保存到SDcard文件中。我目前的项目与大型数据数组类似,但并没有设置为大型数据数组,并且它的映射文件中有以下内容:所以看起来C系统为堆栈27958字节(28%)保留了相当大的RAM块,但是它保留了相当大的RAM块还剩下70公斤。不够20个样品,但仍然相当大。还是我都错了?
|
|
相关推荐
8个回答
|
|
只有32 kb(减去SFR)是一个常规内存。剩下的是使用DSRPAG和DSWPAG寄存器映射到数据空间的EDS存储器。我不知道C30是如何处理的,但EDS是经常讨论的,所以如果你搜索论坛的敌人EDS和C30一定有什么。
|
|
|
|
默认情况下,它将分配未使用的RAM,因为您有大量未使用的RAM,因此您会得到一个大的堆栈。通常不需要手动管理堆栈大小。使用“EDS”属性在EDS中放置一些东西:
|
|
|
|
哦,孩子!这是一个挫折……我以前从未涉足过这个领域,但现在我已经阅读了描述EDS的家庭数据表。不幸的是,我最多只能访问EDS的第1页作为缓冲区(参见手册第68页),因为第2页不是完整的32kB的RAM,下面是0x018000。0x0187FE似乎还被其他东西使用。对于我来说,问题是手册中的汇编代码如何转换为C(特别是C30)?我不太擅长进行汇编编程,我在20世纪80年代初离开了那个领域。我能执行一些魔术指令把EDS页面#1放入地址空间然后把它留在那里,这样我就可以至少存储8kSamples(每个UINT32)并使用常规点访问数组。用于写入磁盘的ERS?我的WriteBufToFile()函数使用指针作为字节指针,而我使用UINT32指针填充数组,这样行吗?我相信所有FATFS操作都是以字节为指针的。
|
|
|
|
我从未使用过这个家族,但我猜如果编译器知道EDS地址空间,那么它应该为您处理所有细节。
|
|
|
|
是的,我现在知道EDS记忆,但我没有一个很好的例子来理解它在现实生活中的方式。我需要一些例子,我认为以前有更多的人遇到过这种缓冲问题(比如音频)。我在C30编译器部分打开了一个新线程,因为它似乎是合适的地方。希望它会导致一些响应…
|
|
|
|
大约2年前我和它战斗过,我最新的VGA发生器是的,它很有趣。
|
|
|
|
仅供参考,对于C30,在编译器选项中,选中“启用大数组”。对于XC16,选中“允许大于32K的数组”在内存模型中。
|
|
|
|
这些字节中丢失的范围可能是双端口DMA RAM。这仍然是RAM,只适用于DMA。
|
|
|
|
只有小组成员才能发言,加入小组>>
5163 浏览 9 评论
2000 浏览 8 评论
1928 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3172 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2226 浏览 5 评论
732浏览 1评论
615浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
504浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
631浏览 0评论
528浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 17:18 , Processed in 1.364594 second(s), Total 91, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号