> Kann es sein, das ich einen falschen Adressbereich habe? Oder das
> ich etwas bein "einschalten" falsch gemacht haben?
Sehe ich erstmal nichts.
Du wirst wohl mal einen Oszi dranklemmen müssen.
Wird denn der /RD-Impuls ordentlich weitergeleitet?
Random remarks:
> #include <avr\io.h>
Bitte Vorwärtsstriche nehmen, auch unter Windows. Das verbessert die
Portabilität.
> #include <stdint.h> //Weis noch nicht wo für
Um deine privaten Hacks abzulösen. ;-)
Statt BYTE also z.B. uint8_t nehmen. Das ist mittlerweile (C99)
standardisiert.
> DDRA = 0xff; //Port B als Ausgang setzen
Nicht nötig. Ist ja ohnehin ein Ein- oder Ausgang, je nachdem, ob du
liest oder schreibst. Wenn SRE gesetzt ist, wird die normale
Portlogik hier überschrieben.
> EMCUCR |=(1<<SRW00);//Wait Status auf die längste Zeit stellen
> EMCUCR |=(1<<SRW01);//Wait Status auf die längste Zeit stellen
> EMCUCR |=(1<<SRW10);//Wait Status auf die längste Zeit stellen
> EMCUCR |=(1<<SRW11);//Wait Status auf die längste Zeit stellen
> SFIOR |=(1<<XMM0); //Adressbit's A08 bis A15 ausschalten
> SFIOR |=(1<<XMM1); //Adressbit's A08 bis A15 ausschalten
> SFIOR |=(1<<XMM2); //Adressbit's A08 bis A15 ausschalten
Die kannst du besser in zwei Zeilen zusammenfassen.
Nein, halt mal, nicht ganz. SRW10 ist im MCUCR, nur die anderen Bits
sind im EMCUCR. Du musst auch nur eine Hälfte der Bits setzen, sofern
du keine Sektorierung des externen Speichers brauchst (SRL0..2). Da
du diese nicht benutzt, ist alles by default `upper sector', damit
genügen SRW10 und SRW11. Also:
1 | EMCUCR = (1 << SRW11);
|
2 | SFIOR = (1 << XMM0) | (1 << XMM1) | (1 << XMM2);
|
3 | MCUCR = (1 << SRE) | (1 << SRW10);
|
Hmm:
> Kann es sein, das ich einen falschen Adressbereich habe?
Vielleicht ja doch?
``Since the external memory is mapped after the internal memory as
shown in Figure 11, only 64,256 Bytes of external memory are available
by default (address space 0x0000 to 0x05FF is reserved for internal
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
memory).''
^^^^^^
Vielleicht solltest du ja die Pointer auf 0x600 und 0x601 legen?