Naja, ich würde da einen größeren Speicher genauso anklemmen, wie im
Atmel Datenblatt beschrieben, mit AD0-7, A0-15, ALE...
Die zusätzlichen Adressleitungen des SRAMS würde ich an einen freien
Port legen, zB an den PORTC:
PC0 => A16
PC1 => A17
PC2 => A18...
Somit kannst du mit diesem Ausgangsport zwischen 64kByte-"Bänken"
umschalten:
PC = 0x00 : 0x00'00'00 - 0x00'FF'FF
PC = 0x01 : 0x01'00'00 - 0x01'FF'FF
PC = 0x02 : 0x02'00'00 - 0x02'FF'FF
...
Du musst jetzt allerdings VOR JEDER Speicheroperation dafür sorgen, dass
diese "Bankauswahl" immer auf die Richtige zeigt, da der ATMEL das ja
nicht mitbekommt(Also an das Retten von PORTC denken). Allerdings ist
dieser Speicher NICHT durchgängig erreichtbar:
die unteren (die exakten Zahlen bezihen sich auf einen mega128) 4352Byte
sind IMMER intern im atmel, unabhängig, welche Bank angewählt wird!! Das
liegt daran das der atmel diese Speicherzellen intern hat, und ja aber
nicht weiß das wir Bänke umschalten..
Somit sieht das ganze etwa so aus:
PC = 0x00 : 0x00'00'00 - 0x00'10'FF INTERN
PC = 0x00 : 0x00'11'00 - 0x00'FF'FF die "nullten" (64-4)KByte
PC = 0x01 : 0x01'00'00 - 0x01'10'FF wieder dieselben INTERN !!!!
PC = 0x01 : 0x01'00'00 - 0x01'FF'FF die ersten" (64-4)KByte)
PC = 0x02 : 0x02'00'00 - 0x02'10'FF wieder dieselben INTERN !!!
usw...