lijian46021 发表于 2008-5-12 16:10:35

请教MEGA128外扩SRAM的读写问题

我用MEGA128总线外扩了一片FM1808,在其有效的地址范围内(0x1100~0x9100)定义了一些变量,可用AVR-GCC编译过去,但是用双龙出的JTAG ICE仿真器读写FM1808没有反映,并且在AVR Studio4.13的调试窗口的Memory 对话框的Extended SRAM 中不能改写其数据,可改写片内EEPROM、 片内SRAM的内容。请高手指点。

/*********************************************************************************************************

AVR 外部EEPROM读写范例

EEPROM的简介
EEPROM的写操作
EEPROM的读操作
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名:RdWr_FM1808.c
**创 建 人: lijianliang
**最后修改日期: 2008年4月2日
**描 述: read write FM1808
记录:
*********************************************************************************************************/
/*
在普通模式下,前 4352 个数据地址包含寄存器文件, I/O 存储器,扩展的 I/O 存储器以
及内部数据 SRAM。起始的 32 个地址为寄存器文件,然后是 64 个 I/O 存储器,接着是
160 个扩展的 I/O 存储器,最后是 4096 字节的内部数据 SRAM。
*/
#include <avr/io.h>
//#include <avr/inttypes.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMs(uint t)
{
uint i;
for(i=0;i<t;i++)
{
i++;
i--;
}
}
void main(void)
{
uchar j=0;
uint *ptr;
uint temp;
MCUCR=0x80;//外部SRAM使能
XMCRA=0x2c;
XMCRB=0x00;//使能外部存储器总线保持功能
ptr=0x2100;
*ptr++=0x05;
temp=0x0006;
for(j=0;j<100;j++)
{
//temp=*ptr;
++temp;
DelayMs(10);
*ptr++=temp;
DelayMs(10);
DelayMs(10);
}
while(1)
{
DelayMs(100);
DelayMs(100);
}

}

lijian46021 发表于 2008-5-12 16:11:40

恳请帮助

machao 发表于 2008-5-13 22:44:55

双龙出的JTAG ICE仿真器我没用过,我基本不使用硬件仿真的.

写个软件测试一下,如写到1K的0XA5到外部RAM,再读出判断是否是1K的0XA5,是点亮一个LED,不是点亮另一个LED.如果板上有RS232,把读出的数据送PC检查.
页: [1]
查看完整版本: 请教MEGA128外扩SRAM的读写问题