Forum: Mikrocontroller und Digitale Elektronik SRAM beim Mega 128


von peter (Gast)


Lesenswert?

Hallo, guten Tag.

Kann ich diese Regel unten für das SRAM beim Mega128 anwenden um die 
Funktion  zu lernen oder hat der Mega128 eine andere Vorgehensweise 
,weil
er ja bestimte PINS für ein SRAM vorgesehen  hat ?

Der Ablauf zum Beschreiben:
1. OE/ und WR/ inaktiv
2. Adresse anlegen ( und einmal den Latch High - Low für die unteren 
Adressbits )
3. Daten anlegen
4. WR/ aktiv
5. WR/ inaktiv

Der Ablauf zum Lesen:
1. OE/ und WR/ inaktiv
2. Adresse anlegen ( und einmal den Latch High - Low für die unteren 
Adressbits )
3. OE/ aktiv
4. Daten einlesen
5. OE/ inaktiv

Gruss
peter

von Oliver (Gast)


Lesenswert?

Was schreibt denn das Datenblatt dazu?

Oliver

von Purzel H. (hacky)


Lesenswert?

Wenn der 128' schon Pins vorgesehen hat, sollte man die optimalerweise 
auch verwenden. Dann sollte auch die im Datenblatt Spezifikation 
erfuellt werden.

von spess53 (Gast)


Lesenswert?

Hi

>Kann ich diese Regel unten für das SRAM beim Mega128 anwenden um die
>Funktion  zu lernen oder hat der Mega128 eine andere Vorgehensweise
>,weil er ja bestimte PINS für ein SRAM vorgesehen  hat ?

Der ATMega hat nicht nur bestimmte Pins dafür vorgesehen, sondern er hat 
ein komplettes Interface für externen RAM. Im Datenblatt gibt es fast 10 
Seiten incl. Codebeispiel in Assembler und C zu XMEM. Hast du das 
gelesen?

MfG Spess

von Helmut L. (helmi1)


Lesenswert?

peter schrieb:
> Kann ich diese Regel unten für das SRAM beim Mega128 anwenden um die
> Funktion  zu lernen oder hat der Mega128 eine andere Vorgehensweise
> ,weil
> er ja bestimte PINS für ein SRAM vorgesehen  hat ?

Wozu? Der Atmega128 hat ein externes Memoryinterface eingebaut da 
brauchst du dich um die Ansteuerung der Pine nicht selbst zu kuemmern 
das macht er schon fuer dich.

ALE (PG2) an den Clockeingang vom Latch
RD  (PG1) an den OE Eingang vom RAM
WR  (PG0) an den WR Eingang vom RAM

Dann noch AD0..7 an Latch und Dateneingaenge vom RAM
A8..15 an die Adresseingaenge vom RAM und das wars

von Fox Mulder (Gast)


Lesenswert?

spess53 schrieb:
> Hast du das gelesen?

Dann lies mal das, da müsste man ganz von vorn anfangen:

http://www.roboternetz.de/community/threads/61860-Externen-SRAM-benutzen-am-ATmega-128

von Peter B. (funkheld)


Lesenswert?

............Codebeispiel in Assembler und C zu XMEM...............

Diese Beispiele habe ich nicht gefunden im Datenblatt, oder habe das 
falsche, es hat 12 Seiten.

Danke.

Gruss

von spess53 (Gast)


Lesenswert?

Hi

>Diese Beispiele habe ich nicht gefunden im Datenblatt, oder habe das
>falsche, es hat 12 Seiten.

Ja. Du hast die Kurzform.

http://www.atmel.com/Images/doc2467.pdf

S.25...34.

MfG Spess

von peter (Gast)


Lesenswert?

Jup, das habe ich gefunden :

#define OFFSET 0x2000
void XRAM_example(void)
{
unsigned char *p = (unsigned char *) (OFFSET + 1);
DDRC = 0xFF;
PORTC = 0x00;
XMCRB = (1<<XMM1) | (1<<XMM0);
*p = 0xaa;
XMCRB = 0x00;
*p = 0x55;
}

Damit kann ich als Anfänger nicht viel anfangen.
Gibt es irgendwo ausführliche Programmteile die man aus einem C-Code 
evtl raussuchen kann ?

Danke.

Gruss

von Helmut L. (helmi1)


Lesenswert?

Initialisierung:

MCUCR |=  (1 << SRE);    external RAM enable


XMCRA |= (1 << SRW00) | (1 << SRW01) | (1 << SRW11);   Waitstates enable


XMCRB |= (0 << XMM0) | (0 << XMM1) | (0 < XMM2);   Alle Addressleitungen 
gueltig

Zugriff:

unsigned char *p,v;

p = 0x2000;       Gewuenschte RAM Addresse 0x12000 ist nur Beispiel

*p = 0x55;        Schreiben ins RAM

v = *p;           Lesen aus dem RAM

Ansonsten wenn du dem Linker mitteils wo RAM ist verwaltet er das ganz 
alleine von sich aus.

von Peter B. (funkheld)


Lesenswert?

Au man..., das hätte ich jetzt nicht gedacht, das es so kurz ist das 
Lesen und das SChreiben.

Danke.

Gruss
peter

von spess53 (Gast)


Lesenswert?

Hi

>XMCRB |= (0 << XMM0) | (0 << XMM1) | (0 < XMM2);   Alle Addressleitungen

Sicher?

MfG Spess

von Oliver (Gast)


Lesenswert?

spess53 schrieb:
> Sicher?

Ganz sicher        nicht ;)

OLiver

von spess53 (Gast)


Lesenswert?

Hi

>Ganz sicher        nicht ;)

Tip: Was macht eine Veroderung mit einer Null?

MfG Spess

von Helmut L. (helmi1)


Lesenswert?

spess53 schrieb:
>>XMCRB |= (0 << XMM0) | (0 << XMM1) | (0 < XMM2);   Alle Addressleitungen
>
> Sicher?
>
> MfG Spess

Steht da nur damit man sieht das man das Register auch noch aendern kann 
wenn der Addressbereich ein anderer ist. Ich weiss ja nicht wieviel RAM 
er dort anschliessen will und die Addressleitungen A8 .. A15 alle 
braucht. Braucht er sie nicht alle muessen halt die '0' durch eine '1' 
ersetzt werden je nach Bereich.

von peter (Gast)


Lesenswert?

Jup, danke für die Hilfe.

Dieses SRE finde ich nicht in der iom128.h :

(1 << SRE);

Danke.

peter

von Helmut L. (helmi1)


Lesenswert?

>Dieses SRE finde ich nicht in der iom128.h :

>(1 << SRE);

Bei mir ist es drin:

/* MCU general Control Register - MCUCR */
#define    SRE          7
#define    SRW          6
#define    SRW10        6       /* new name in datasheet 
(2467E-AVR-05/02) */
#define    SE           5
#define    SM1          4
#define    SM0          3
#define    SM2          2
#define    IVSEL        1
#define    IVCE         0

von Spess53 (Gast)


Lesenswert?

Hi

>Bei mir ist es drin:

Bei den GCCs, die ich mir mit den diversen AVR Studios eingefangen habe 
ist es auch überall drin.

MfG Spess

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Helmut Lenzen schrieb:
> Bei mir ist es drin:

Das steht seit der Revision 2 in der Datei drin, die vor mehr als
einem Jahrzehnt ins CVS importiert worden ist (meint mein "svn
annotate"):

r2 | troth | 2002-07-05 22:38:44 +0200 (Fri, 05 Jul 2002) | 2 lines

Initial commit of sources from avr-libc-20020630.

Diese commit message suggeriert, dass es bereits vor dem Juni 2002
unverändert in dieser Datei zu finden war …

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.