chuandaoxy 发表于 2024-1-26 10:01

mega64 外接ram62256

因为要做计算所以扩了一个大ram,在做测试的时候,借鉴了一个128的code,参考了https://www.amobbs.com/thread-3992100-1-1.html,可是当buffer大于255时串口就没有输出新消息了目前是protues仿真,我的编译条件没有设置

Linker Options:
-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    __attribute__((section(".xdata")));

int main(void)

{
        //uint8_t*mem ;
    uint8_t*temp ;
        uint8_tindex;
        uint8_tdata=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 = data++;

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

    while(1)





zwsam 发表于 2024-2-13 11:05

页: [1]
查看完整版本: mega64 外接ram62256