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
Wenn der 128' schon Pins vorgesehen hat, sollte man die optimalerweise auch verwenden. Dann sollte auch die im Datenblatt Spezifikation erfuellt werden.
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
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
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
............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
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
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
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.
Au man..., das hätte ich jetzt nicht gedacht, das es so kurz ist das Lesen und das SChreiben. Danke. Gruss peter
Hi
>XMCRB |= (0 << XMM0) | (0 << XMM1) | (0 < XMM2); Alle Addressleitungen
Sicher?
MfG Spess
Hi
>Ganz sicher nicht ;)
Tip: Was macht eine Veroderung mit einer Null?
MfG Spess
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.
Jup, danke für die Hilfe. Dieses SRE finde ich nicht in der iom128.h : (1 << SRE); Danke. peter
>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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.