Потребовалось мне немного оперативной памяти, килобайт этак 30, но вот в чем проблема, немного это по меркам современных пк, а микроконтроллеру (в частности меге 16) это ой как дофига. Ладно, полазив по завалам в шкафу нашел старую материнку с которой торжественно выдрал ЕЁ, память UM61256-15, 32килобайта!!! Ножек у мега 16 нехватило и решил я использовать еще одну 40 лапковую мегу, только для операций с памятью. Методом тыка и чтения даташитов накропал небольшую прогу, пишущую и читающую память, по циклу на то и то.
Код: Выделить всё
void write(void)
{
OE=0;
WE=0;
DDRD=0xFF;
}
void out(void)
{
OE=1;
WE=0;
DDRD=0x00;
}
void tk(void)
{
OE=1;
WE=1;
OE=0;
WE=0;
}
//.........
for(i=0;i<=32767;i=i+1){
PORTA=i;
PORTB=i>>8;
PORTD=i;
tk();
}
out();
for(i=0;i<=32767;i=i+1){
PORTA=i;
PORTB=i>>8;
}
//..........
Порты А и Б - адрес памяти, порт Д - данные, частота меги - 16мгц. Все прекрасно работает в эмуляторе ПРОТЕУС, но вот получился небольшой вопрос, почему это работает??? Ведь по даташиту необходимы еще задержки 15нс???
ПС, да и 61256 в протеусе я ненашел, поставил 62256, полный аналог.