Ik ben bezig met een atmega128 aan een isa netwerk kaart te hangen.
Die dit doormiddel van de external memory interface aanstuur.

Nu zit ik met het probleem dat als ik in het externe geheugen plaats 0x0000 wil lezen ik in mijn interne geheugen lees (r0 in mijn geval).

Lees ik de eerste plek na mijn interne geheugen (0x1101) dan komt op de adres bus ook die waarde te staan en lees ik dus ver in het geheugen van mijn ISA kaart.

Wat doe ik niet goed?

Kun je op verschillende manieren doen. Je zou er voor kunnen kiezen om maar 16KB of 32KB van de externe adres ruimte te gebruiken en dit te mappen in het gebied 0x8000 - 0xFFFF

Toch is het mogelijk om ook S-RAM op adres 0 aan te spreken door middel van "boundary rolling", maar hiervoor moet je wat truuken. Dit is overigens duidelijk beschreven in de datasheet van de ATmega128. Het hoofdstukje over externe s-ram addressing niet 1, niet 2, maar 10x doorlezen, het staat er echt =)

Dat mappen kom ik wel vaker tegen, de bedoeling bij 0x8000 t/m 0xffff is dat ik adres lijn 16 gewoon altijd hoog heb?

Data scheed had ik al een paar keer door genomen maar dus blijkbaar niet genoeg :)