打印
[AVR单片机]

mega64 外接ram62256

[复制链接]
920|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
因为要做计算所以扩了一个大ram,在做测试的时候,借鉴了一个128的code,  参考了https://www.amobbs.com/thread-3992100-1-1.html,可是当buffer大于255时串口就没有输出新消息了目前是protues仿真,我的编译条件没有设置

Linker Options:
[size=1em][size=1em]-Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x8030ff  是不是这里的问题还是默认8K,是不是要修改成32k




    MCUCR = 0x80;    //bit7设为'1',使能外部存储器接口
    XMCRA = 0x00;
   XMCRB |= 0x02; // 释放PC7,作为通用I/O引脚使用  
    DDRC  =  0xff;
    PORTC = 0x00;

#define BUFFER_SIZE 512   这里大于255就没有输出了,为什莫
#define PRINTF(format, ...) printf_P(PSTR(format), ## __VA_ARGS__)

int temp[512]    __attribute__((section(".xdata")));

int main(void)

{
        //uint8_t  *mem ;
    uint8_t  *temp ;
        uint8_t  index;
        uint8_t  data=1;
    // Initialise USART
        printf_init();
    // Send string
        PRINTF("AVR XMEM test\n");
        XMEM_init();
        PRINTF("XMEM init\n");
       
      temp =  malloc(BUFFER_SIZE);
        PRINTF("Allocating 256 bytes space in ext ram\n");   
       
        PRINTF("%d Byte buffer (starting at 0x%04X) filled with incrementing numbers:\n",BUFFER_SIZE,temp);
        // Fill memory incrementing values
        for(index = 0; index < BUFFER_SIZE; index++)
        {
           
                temp[index] = data++;

        }
        // Display memory block
        for(index = 0; index < BUFFER_SIZE; index++)
        {
               
          PRINTF("%02X ",temp[index]);
                if((index&0x0F) == 0x0F)
                {
                        PRINTF("\n");
                }
        }
        //free allocated memory
       
   free(temp);

    while(1)





TEST.png (167.14 KB )

TEST.png

ERAM.png (203.96 KB )

ERAM.png

使用特权

评论回复

相关帖子

沙发
zwsam| | 2024-2-13 11:05 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

1044

帖子

4

粉丝