Hallo stani!
Dein SRAM ist statischer Speicher in/von man unter gewählter Adresse (A12 ... A0) Daten (I/O7 ... I/O0) ablegen/auslesen kann, wobei die Richtung des Datentransferns von/in I/O Pins durch Pegel am /WE Pin festgelegt wird.![]()
Hallo stani!
Dein SRAM ist statischer Speicher in/von man unter gewählter Adresse (A12 ... A0) Daten (I/O7 ... I/O0) ablegen/auslesen kann, wobei die Richtung des Datentransferns von/in I/O Pins durch Pegel am /WE Pin festgelegt wird.![]()
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Aber wie soll ich mit diesen Addressports umgehen??
Wenn ich z.b jetzt an A0 ein bit senden will und es soll in 5 Secunden bei I/O 0 wieder rauskommen,wie soll ich das manchen.
Das Problemm ist ,dass ich keine Ahnung habe wie diese Addressports funktionieren.
Ah ja und einen schönen Karfreitag
Beim SRAM wird nix gesendet, sondern unter bestimmter Adresse byteweise nur "abgelegt" bzw. "genommen", genauso wie am Bahnhoff das Gepäckfach. Du könntest nur ein ganzes Byte in gwünschte Adresse schreiben und z.B. nach 5 Sekunden bei gleicher Adresse auslesen.
Sie funktionieren genauso, bloss bidirektional, wie bei Post. Man brigt ein z.B. Päckchen mit einer Adresse und es wurde ensprechend (Inhalt ist egal) an diese Adresse zugestellt. Bei der Post könnte man sich leider kein Päckchen wünschen, wenn man eine Adresse angibt.![]()
Geändert von PICture (22.04.2011 um 12:20 Uhr)
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
wie spricht man den in Bascom oder in C diese Andressen an?Ich denk mal man muss eine oder mehrere 8bit Variablen erstellen und Ports für die Adressen Definieren.
Kann mir jemand ein kleines Beispiel posten??
ICh kenn das jetzt nur mit den Registern.
EDIT: Hat das Ablegeben der Bytes mit dne 8 Ausgängen zu tun??Ich kenn nähmlich ein 16K x 1 SRAM und der hat nur ein Ausgang,also müsste man da jewals 1 bit ablagern können.
Danke
Beim SRAM müssen alle Adressbits gleichzeitig anliegen. Wenn ein µC genug I/O Ports hat, könnte man für bis zu 16-bittige Adresse 2 Ports verwenden. Ich kenne AVR's nur gering und kann dir leider bei der Software nicht helfen.
Das in deinem Edit stimmt.
Übrigens, für sequenzielles Bitschieben, je nach nötige Anzahl, würde ich eventuell kaskadierte Schieberegister nehmen, wofür keine Adresse nötig ist.![]()
Geändert von PICture (22.04.2011 um 13:29 Uhr)
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Danke jetzt versteh ich das langsam.
Falls mir jemand ein kleines Beispiel zeigen könnte ,währ ich sehr dankbar.
Ich glaube man zählt die Adressen als Hexcode wie z.b 0x0000,0x0001,0x0002 ich denke man schiebt dan eine 8bit variable dort rein.
typedef signed char int8_t;
int8_t i;
i=232;
0x0000=i;
Jedoch weiß ihc nicht wie man jetzt die Adressen anspricht,wenn man die an den MCU anschließt.
EDIT:Woher weiß man eigendlich von wo bis wo die Adressen gehen?? ich glaube das Ende ist immer 0xFFFF
Geändert von stani (22.04.2011 um 18:05 Uhr)
Jein. 0x0000 kann kein Ziel deiner Zuweisung (von i) sein.
Soll heißen: Das Prinzip ist richtig, aber die Umsetzung nicht.
Stell dir ein Süßigkeiten/Getränke oder Zigarettenautomat vor. Diese Teile haben Fächer, in denen die Ware liegt. Um nun die Ware zu wählen, gibst du die Nummer von dem Fach an, aus welchem du deine Ware haben möchtest (z.B. 12) und die Ware aus Fach 12 wird dann ausgegeben.
Dieses Fach entspricht nun deiner Speicheradresse. Um dem SDRAM nun mitzuteilen, welches Fach (bzw Adresse) du haben möchtest, musst du die Pins A0-A12 vom SDRam mit Outputpins deines µC verbinden. Mit 13 Bit (A0-A12) kannst du nun 2^13 Byte addressieren, was 8 KiloByte entspricht (Wie man die vollen 64kb anspricht,ist mir aber auch ein Rätsel). Somit stehen dir die Adressen 0x0 - 0x1FFF (oder 0-8191 dezimal) zur Verfügung. Möchtest du nun das Byte von der Adresse 72dezimal (bzw 0x48 hex) auslesen, musst du nun deine µC Ports (die du mit A0-A12 verbunden hast) so belegen, dass an den Pins A0-A12 das bitmuster 1001000 (=72 binär) anliegt.
Zudem musst du nun die Pins I/O 0 - 7 mit deinem µC verbinden. Möchtest du ein Byte der Adresse lesen, liest du die entsprechenden Bits an deinem µC aus. Wenn du ein Byte an Addresse 72dez schreiben willst, setzt du die Pin's an deinem µC so, dass du den gewünschten Wert via I/O 0-7 überträgst.
Ob du lesen oder schreiben willst, musst du ensprechend über /WE und co. setzten (also auch mit dem µC verbinden)
Guck dir aber auch mal das Timing-Diagramm im Datenblatt an. Es dauert etwas, bis die entspr. Werte gelesen werden. Also Speicher Adressieren, dem SDRAM mitteilen, ob du lesen oder schreiben willst, etwas warten und dann das Byte auslesen.
Lesezeichen