Moin!
ich bin grade dabei, ein 32K SRAM an meinen AtMega32 zu basteln, die Schaltung ist folgendermaßen aufgebaut :

PORTA geht jeweils an die Eingänge von 2 74hc573n Latches und I0-I7 vom SRAM 62256, die Ausgänge der Latches sind an A0-A14 und CS vom SRAM, OE der Latches ist an GND, die LE Eingänge sind an PB0 (LE_low) und PB1 (LE_high), PB2 geht an WE und PB3 an OE.

Nun versuche ich, mit folgendem Code den RAM anzusprechen, aber ich kriege immer nur eine 0 gelesen, selbst wenn ich vorher versuche, etwas anderes zu schreiben.
Code:
void writemem(unsigned int addr, unsigned char value)
{
	PORTB |= (WE);
	PORTB |= (RE);
	
	DDRA=0xff;
	
	PORTA = (addr / 256);
	PORTB |= (LE_low);
	_delay_ms(10);
	PORTB &= ~(LE_low);

	PORTA = (addr & 255);	
	PORTB |= (LE_high);
	_delay_ms(10);
	PORTB &= ~(LE_high);

	PORTA = value;
	PORTB &= ~(WE);
	_delay_ms(10);
	PORTB |= (WE);
	DDRA=0;
}

unsigned char readmem(unsigned int addr)
{
	unsigned int value;

	PORTB |= (WE);
	PORTB |= (RE);
	
	DDRA=0xff;
	
	PORTA = (addr / 256);
	PORTB |= (LE_low);
	_delay_ms(10);
	PORTB &= ~(LE_low);

	PORTA = (addr & 255);	
	PORTB |= (LE_high);
	_delay_ms(10);
	PORTB &= ~(LE_high);

	DDRA=0;
	PORTA=0;
	PORTB &= ~(RE);
	_delay_ms(10);
	value = PORTA;
	PORTB |= (RE);
	return value;
}
Als Test benutze ich dieses hier:
Code:
void memtest(void)
{
	unsigned int addr;
	unsigned char value;

	for (addr=0;addr<32767;addr++)
	{
		writemem(addr,42);
		value=readmem(addr);
		uart_putc(value);
				
	}
}
Was mache ich falsch?
Vielen Dank schonmal!!