Board logo

标题: Paged ram问题 [打印本页]

作者: hx_you    时间: 2009-6-30 00:24     标题: Paged ram问题

我所使用的芯片是MC9S12XDP512

在AD的值读取中,我将AD寄存器的值直接赋给放在Paged ram RAM_F8 的变量,读取的值为0

若赋给non-paged RAM中的变量,则读取的值是正确的。

此外,我将non-paged RAM中变量的值赋给Paged ram 中的变量,值也是错误的。

我在编译器中看这些变量的地址都是正确的,为什么会出现这种情况呢?

我在编译器里也加了-D__FAR_DATA的参数

请教如何设置才能利用paged ram中变量读取正确值,难道非要手工指定RPAGE?

[em06]
作者: strongchen    时间: 2009-6-30 10:22

在RAM的定义区可以加上这样的说明试试:

#pragma DATA_SEG __PPAGE_SEG PAGED_RAM


作者: admin    时间: 2009-6-30 11:33

版主解答的好  学习了
作者: hx_you    时间: 2009-6-30 13:09

QUOTE:
以下是引用strongchen在2009-6-30 10:22:00的发言:
QUOTE:

在RAM的定义区可以加上这样的说明试试:

#pragma DATA_SEG __PPAGE_SEG PAGED_RAM

这个我已经在定义变量的.c和声明变量的.h里都加过了

呵呵,

是 #pragma DATA_SEG __PPAGE_SEG PAGED_RAM还是

#pragma DATA_SEG __RPAGE_SEG PAGED_RAM呢?好像应该是后者吧?

不知道为什么一直赋值给paged ram的值都不行。

如果将变量强制转换:例如:

unsigned int AN00_Data;

*((unsigned int *__far)(&AN00_Data)) = ATD0DR6;

这样是可以的

但是如果变量是数组,这样强制转换也不行了。。。。。。

不知道为什么?

[em04]
作者: crazyxray    时间: 2011-10-13 15:08

顶上,我半年来一直也搞不定这个问题,求大虾现身!!!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0