gockel 2 Sekunden:
http://de.wikipedia.org/wiki/Static_..._Access_Memory
also müsste ich quasie sowas hier machen:
#define SRAMROW PORTA //das sind die adresspins für die rows
#define A0 1 // Zeile 1 des Rasters
#define A9 0
#define A10 0
#define A11 0
#define A12 0
#define SRAMIO PORTC // das sind die I/O pins
int main()
{
unsigned char i="hallo";
SRAMROW = 0x0;
//Jetzt muss man irgendein pin auf h oder l setzten zum schreiben und dan in die I/O Ports i einschicken
Ich hab mich immer gewundert wieso i/O und nicht nur O ,weil ich dachte das ist immer output und durch die adressepins kommen die daten rein
SRAMIO=i;
return 0;
}
gockel 2 Sekunden:
http://de.wikipedia.org/wiki/Static_..._Access_Memory
Vor den Erfolg haben die Götter den Schweiß gesetzt
Wie soll das den gehen??Muss ich erstmal die Adresse aufrufen und dan was reinschreiben:Jau, die Adresse schriebst Du innen in den Briefumschlag und den Text außen drauf?
SRAMROW = 0x0;
0x0=i;
??
Hallo stani,
mal was grundsätzliches: Xram an einem AVR ohne herausgeführten Adressbus anzuschließen ist nicht besonders klug.
Man nimmt normalerweise einen AVR, der dafür vorgesehen ist, Atmega8515/162 oder Atmega64/128 aufwärts.
Schaltungen dafür gibt es im Prinzip nur eine:
http://www.mikrocontroller.net/topic/96205 3.Beitrag von hinten.
Gruß, Michael
Ja das kenn ich schon nur ich wollte halt wissen wie so ein Ram angesteuert wird.mal was grundsätzliches: Xram an einem AVR ohne herausgeführten Adressbus anzuschließen ist nicht besonders klug.
Man nimmt normalerweise einen AVR, der dafür vorgesehen ist, Atmega8515/162 oder Atmega64/128 aufwärts.
Schaltungen dafür gibt es im Prinzip nur eine:
http://www.mikrocontroller.net/topic/96205 3.Beitrag von hinten.
Hallo stani,
In Basic?Code:Ja das kenn ich schon nur ich wollte halt wissen wie so ein Ram angesteuert wird.
Dim Variable(512) as Xram Word
Dim Bytevariable as Xram Byte
und dann ganz normal im Programm als Variable verwenden.
In C ist es ähnlich einfach, das initialisieren mußt du aber selbst machen.
Google Stichwort xram AVR c
Gruß, Michael
Danke für den Basic Code Abschnitt.Ich werde mir jetzt einfach mal ein Atmega8515 + 74AC573 holen und dan den Ram dadran anschließen.
Man müsste also so anschließen:http://www.google.de/imgres?imgurl=h...HkIciCOtza5PgI
nur eben ohne die pine A13-A18,weil ich die nicht besitze.
Dan müsste ich doch bei Bascom eingeben:
Dim Variable(1024) as Xram Word //ich denke 1024 weil das ja 8Kbit sind und man das durch 8 teilen muss für bytes
Dim Bytevariable as Xram Byte
und dan??
EDIT: Da sind auch noch die Pins WE,OE und diese CE1 und CE2
Hallo stani,
nein, du verstehst da was falsch, das Beispiel war wohl nicht ganz korrekt.
Ich versuche es nochmal neu:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 64
$swstack = 32
$framesize = 80
$xramsize = &H2000
Config XRAM = Enabled
Dim blabla as Xram Byte
Dim V2 as Xram Word
Dim Bla_S As Xram Single
Dim Str_v As Xram String * 4
u.s.w.
Du kannst so viele Variablen benutzen, wie du Xram-Platz hast, abzüglich der Registeradressen, weil sich die Überschneiden.
Du kannst aber bei 8kB auch den CS vom Speicher an eine Adresse anschließen und damit deinen Speicherbereich auswählen.
Gruß, Michael
Und noch mal zu Deinem Eingangspost. Willst Du den RAM nur um das Display anzusteuern?
Jedes Display hat zur Darstellung der Pixel schließlich sein eigenes "RAM", in das Du die Daten einfach nur reinschreiben musst. Falls Du überprüfen musst, was dort drinnen steht, bieten die meisten Displays auch die Funktion, den internen RAM auszulesen. Damit hast Du praktisch Deinen gesuchten ExternenRAM im Display drin.
Allerdings hast Du dann natürlich die gleichen Probleme.
Der Vorgang ist aber fast immer der GLeiche:
1 .Verbindung Deiner individuellen Pins des µC mit den Adresspins, den DatenPins und den SteuerPins (Read/Write, Enable usw.) mit dem RAM/Display.
2. Anlegen der gewünschten Adresse für ein bestimmtes Byte (0-xkB)
3. Einstellung der Steuerpins (zB Read, usw)
4. Setzen der Daten durch einen Taktpuls an CS oder wie auch immer bezeichnet.
Wenn man wenige Pins hat, benutzt man zusätzliche "Zwischenspeicher" (Octal Buffer), die zB ein ganzes Byte an AddressLow "halten" während man ein anderes an AddressHigh schreibt.
So kann man den Datenbus auf 8Bit reduzieren, benötigt dann aber für jeden der Buffer ein weiteres Bit oder aber 2 Bit zur Ansteuerung eines Multiplexers, der es einem ermöglichst 4 Buffer (zB 74hc540) anzusteuern.
Dazu gibt es soweit ich weiß auch was im RN Wissen!
Gruß
Lesezeichen