ALE /RD /WR => atmega128

Gast #348231
Lesenswert?
• ▲
▼
>ich möchte gerne beim atmega128 die oberen Signale, um einen
>externes sram zu aktivieren.

Was möchtest du?

>code v avr.

Codevision?

Bildlich gesprochen: Versuch mal die Zähne auseinander zu kriegen!
In der Regel muß man, um das Interface für externen Speicher, dem
Compiler dort einen bestimmten Speicherbereich zuweisen.
Sowas ist IMHO im Handbuch beschrieben.
#348234
Lesenswert?
• ▲
▼
Das ExtMEM Interface ist eine Hardware und kann demzufolge nicht durch
den Compiler autom. erzeugt werden.

Schau ins Datenblatt unter ExtMEM und du wirst einige Register finden
die du korrekt einstellen musst.

Dem Compiler selber musst du nun sagen das ein externer SRAM vorhanden
ist. Meistens wird das im Makefile oder Linkerscript eingestellt. Ich
kenne mich nur mit WinAVR-gcc aus.

Gruß Hagen
Gast #348236
Lesenswert?
• ▲
▼
Verwende einfach den Code Generation Wizard und sage dem Compiler, wie
viel externen Speicher Du verwenden willst. In der Library mem.h stehen
vier Funktionen zum Zugriff auf eben diesen Speicher (pokeb, pokew,
peekb und peekw).
Gast #348237
Lesenswert?
• ▲
▼
jou danke erstmal für eure beiträge..!
dann versuche ich mal mein glück...!

@johnny.m
wie kann ich die signale ale /rd /wr ansprechen?
bitadressierbar ist der PORTG ja nicht!

kannst du mir da noch weiterhelfen
Gast #348239
Lesenswert?
• ▲
▼
Ach jetzt klickert es...
Dann muss ich ja nur noch die Adressierung, auf dem Port A und Port C
vornehmen.
Wie erkennt denn das Daten Signal ob ich die Daten lesen oder schreiben
will? Dafür gibt es das RD und WR Signale..muss ich diese im Adressbus
mit integrieren ?
Danke schon mal für Eure Hilfen!
#348240
Lesenswert?
• ▲
▼
>Dann muss ich ja nur noch die Adressierung, auf dem Port A und Port C
>vornehmen.

Nein, du musst überhaupt nichts "vornehmen", bis auf das Aktivieren
des externen Speichers. Wenn selbiger aktiviert ist greift du z.B. mit

unsigned char *ptr = 0x1015;
*ptr = 100;

auf den externen Speicher zu. Der AVR macht dabei folgendes SELBER:
- Adresse 0x1015 auf AD0-7 und A8-15 anlegen
- ALE setzten (dein externes Latch muss sich hier die Adresse
zwischenspeichern)
- ALE zurücksetzten
- Daten (100) auf AD0-7 anleden
- WR setzten
- WR zurücksetzten

Obigen Code sollte man aber besser so nicht verwenden, es ist besser
wenn sich der Compiler selbst um den Speicherzugriff kümmert.

Wenn du die Linkerparameter so einstellst dass statische Variablen im
externen Speicher liegen wird mit

unsigned char c;
c = 100;

automatisch der externe Speicher verwendet.
Falls du nur den Heap ins externe SRAM legst, wird der externe SRAM nur
für mit malloc alloziierten Speicher benutzt.

Bitte im Forum und vor allem in der AVR_LIBC-Doku suchen, da ist der
Speicheraufbau recht gut beschrieben.

Stefan
Gast #348241
Lesenswert?
• ▲
▼
Danke Stefan, sehr hilfreiche Info´s für mich !
So langsam  bekomme ich eine Übersicht von dem Thema.

Falls ich Daten aus einem SRAM lesen möchte,
wie gehe ich da vor ?
WR ist ja schreiben der Daten an eine Speicherstelle
Gast #348245
Lesenswert?
• ▲
▼
> WR ist ja schreiben der Daten an eine Speicherstelle
WR ist ein SIGNAL, das Dein µC benutzt, um auf den Speicher
zuzugreifen. Du als Programmierer hast mit diesem Signal nichts zu tun!
Stefan schreibt in seinem Beispiel etwas in eine Variable. Es dürfte
dann ja wohl kein großes Problem darstellen, etwas aus einer Variable
zu lesen, oder?

Mit dem ersten Beispiel:
unsigned char *ptr = 0x1015;
unsigned char x;
*ptr = 100;   // Das ist ein Schreibzugriff...
x = *ptr;     // ...und das ein Lesezugriff...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.