Zitat Zitat von stani Beitrag anzeigen
0x0000=i;
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.