Вот схема.
Программа стандартная сгенерена CodeVision...
- Код: Выделить всё • Развернуть
// External SRAM page configuration:
// - / 0000h - FFFFh
// Lower page wait state(s): None
// Upper page wait state(s): 2r/w
MCUCR=0x80;
XMCRA=0x02;
Плюс еще в настройках компилера говорю что внешняя память есть.
Но как только прошиваю - все виснет намертво...
А вот это работает нормально:
- Код: Выделить всё • Развернуть
void Write(unsigned int Adress, char Data)
{
#asm("cli")
DIR=0xFF;
AD=*(char*)&Adress;
ADR=*(char*)&Adress+1;
PORTG|=0b100;
PORTG&=~0b100;
AD=Data;
PORTG&=~0b001;
#asm("nop")
PORTG|=0b001;
//AD=0;
//ADR=0;
DIR=0;
#asm("sei")
}
char Read(char Adress)
{
char data;
#asm("cli")
DIR=0xFF;
AD=*(char*)&Adress;
ADR=*(char*)&Adress+1;
PORTG|=0b100;
PORTG&=~0b100;
DIR=0;
PORTG&=~0b010;
#asm("nop")
data=DATAIN;
PORTG|=0b010;
#asm("sei")
return data;
}
Есть подозрение что микросхема-защелка адреса работает не так как надо. Надо HCT573, а у меня стоит 574. Но логика работы у них в таком режиме одинаковая. Завтра попробую 573ю.