mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik "Gerät" am XMEM-Interface


Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mir mittlerweile schon etliche Beiträge zum Thema durchgelesen, 
bin mir nicht sicher ob ich alles verstanden habe.

Ich möchte an das XMEM-Interface vom AT90CAN128 ein Gerät (z.B. ein LCD 
oder SRAM) anschliessen. Das angeschlossene Gerät hat 64kB Speicher. 
Programmiert wird mit WinAVR.

Hardware-technisch ist soweit alles klar, also mit HC573 als Latch (wie 
im AT90CAN128-Datenblatt, Seite 26).

Ich möchte nun dass alle Variablen, der Heap und der Stack im internen 
RAM bleiben und ich vom Programm aus direkt auf den kompletten externen 
Speicherbereich zugreifen kann.

Um 64kB an externem Speicher komplett adressieren zu können, gibt es ja 
den "Workaround" mit den XMMx-Bits (siehe z.B. AT90CAN128-Datenblatt, 
Seite 32).

Nun zur vorgehensweise im Programm:
- ich aktiviere SRE, also das externe Interface
- greife dann über Zeiger auf den externen Speicher zu (wie z.B. hier 
Beitrag "Re: Variablen im RAM positionieren" beschrieben)
- wenn die Adresse nun unter 0x1100 liegt, arbeite ich zusätzlich mit 
den XMMx-Bits
- die EXMEMOPTS im Makefile lasse ich wie sie sind
- die Steuerleitungen werden vom uC selbst (automatisch) "bedient"

Stimmt das so? Muss ich noch etwas beachten oder habe ich noch etwas 
vergessen?

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
push

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber aber, immer mit der Ruhe.
push ist, glaube ich, nicht wirklich nett... Also schön geduldig sein.
Zu deiner Frage: Ich kenne die AT90* nicht, aber eins ist klar:

Wenn du den externen Bus aktivierst, bedient der uC die Steuerleitungen 
(RD, WR, R/W oder wie die Leitungen auch immer heissen mögen) 
automatisch. Sonst wäre es ja ein Witz, wenn du die "von Hand" setzen 
und löschen müsstest.

Auf deine anderen Fragen kann ich dir leider nicht kompetent Auskunft 
geben, aber wenn du das mit diesen Bits so aus dem Datenblatt hast, 
wirds wohl so sein. Versuchs doch einfach... Du brauchst ja kein 
externes "Gerät" angeschlossen zu haben; du kannst deinen Code ja in 
einem existierenden System ausprobieren und dann einfach mit dem Scope 
schauen, ob die RD und WR Signale korrekt geschaltet werden. So würde 
ich es jedenfalls versuchen, wenn das Datenblatt nicht weiterhilft. Wie 
man so schnön sagt: probieren geht über studieren ;)

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort und Entschuldigung! Ich hatte Angst, dass meine 
Frage in der Versenkung verschwindet - darum habe ich "gepusht".

Ich werde das dann morgen mal probieren wie du es beschrieben hast.

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also es funktioniert so wie im ersten Post beschrieben.

Ich verodere alle Adressen, die extern liegen mit 0x8000 und setze XMM0 
auf 1. A15 vom Gerät lege ich auf GND.

Damit lassen sich zwar nur 32k adressieren, das reicht mir aber im 
Moment. Die vollen 64k ließen sich dann mit etwas mehr Software-Aufwand 
adressieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.