Mega128 sram CS连PC0地址输出的是0X1100+0X0100和之后为零的
PC0地址输出的是0X1100+0X0100和之后为零的,作为片选信号就有问题了,没有逻辑分析仪还是看不出来的,代码错在哪里了也看不出来// XMEM Example
#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#define F_CPU 1000000
//#define F_CPU 7372800
#include <util/delay.h>
#include "xmem.h"
#define LED_BackLight PC3
#define LED_BackLight_PORT PORTC
#define LED_BackLight_DDR DDRC
void Init_port()
{
// LED_BackLight_PORT &= ~(1<<LED_BackLight);
DDRC |= 0xFF;
PORTC = 0x00;
LED_BackLight_PORT |= (1<<LED_BackLight); //PC7??0
LED_BackLight_DDR |= (1<<LED_BackLight); //PC7????
}
#define ext_PORT1 ((volatile unsigned char *)0x1100)
#define SRAM_offset 0x1100
#define LCD_ADDRESS 0x0100
int main(void)
{
uint8_t *mem = (uint8_t *)(SRAM_offset+LCD_ADDRESS);
Init_port();
XMEM_init();
*mem = 0x55;
XMCRB = 0x00;
//*mem = 0x55;
while(1)
{
}
return 0;
}
#include <avr/io.h>
#include "xmem.h"
void XMEM_init(void)
{
MCUCR |= (1<<SRE)|(1<<SRW10); /* External memory interface enable */
XMCRA |= (0<<SRL0)|(1<<SRW01)|(1<<SRW00)|(1<<SRW11);
XMCRB |= (1<<XMM2)|(1<<XMM1)|(0<<XMM0);//PC7..PC2 released pins
}
虚地址最好改为0x2000 分区后
#define SRAM_offset 0x2000
int main(void)
{
uint8_t *mem = (uint8_t *)(SRAM_offset);
unsigned int i;
Init_port();
XMEM_init();
for(i=0;i<0x200;i++)
{
mem = 0x55;
}
//*mem = 0x55;
while(1)
{
}
return 0;
}
页:
[1]