Forum: Mikrocontroller und Digitale Elektronik Frage betreffs externem RAM an ATmega 2560


von Müller (Gast)


Lesenswert?

Hi zusammen,

ich habe mich schon stundenlang durchs Forum gefressen, jedoch bin ich 
entweder zu blöd oder such mit den falschen Stichworten :(

Folgende Problemstellung:
Ich möchte ein externes RAM an den ATmega2560 anschließen. Ich habe 
schon verschiedene Pläne gefunden nur weiß ich nicht welchen ich nehmen 
soll, da diese sich teilweise in kleinigkeiten wiedersprechen. Das macht 
mich aber sehr unsicher :/
Nun die Fragen:
Was für einen RAM-Baustein brauche ich, größe 64kB, Spannung 5V
Was für ein Latch brauche ich, das HC573 soll ja anscheinend zu langsam 
sein.
Wo bekomme ich das besagte Latch her
Wie muß ich das ganze Verschalten? Es wird doch irgendwo pläne geben die 
erprobt sind oder?

Noch als Anmerkung, ich Programmiere in Bascom (bitte nicht hauen...) 
und habe mir den Plan der dort in der hilfe zu finden ist auch schon 
angesehen, nur bezieht sich der auf einen Mega8535. Das RAM sollte also 
auch ohne große Verknotungen unter Bascom mit dem Xram-Befehl 
angesprochen werden können.
Als Quelle für die Bauteile kann ich Farnell, Reichelt, RS-Components, 
csd-elektronik und diverse andere verwenden, zur not auch das dicke C 
das ist aber ja bekanntlich die Apotheke ;-)

Kann jemand einem Anfänger helfen?

Grüße
Müller

von Müller (Gast)


Lesenswert?

Ich noch mal,

ergänzung zum obrigen Text, der ATmega läuft "Vollgas" d.h. mit 
16MHz-Quartz und wird auch mit 5 Volt gefüttert.

Grüße
Müller

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

> Noch als Anmerkung, ich Programmiere in Bascom (bitte nicht hauen...)

Das klaert zumindest die Frage wozu Du den zusaetzlichen Speicher 
brauchst... *jokingly

von Falk B. (falk)


Lesenswert?

@ Müller (Gast)

>Ich möchte ein externes RAM an den ATmega2560 anschließen. Ich habe
>schon verschiedene Pläne gefunden nur weiß ich nicht welchen ich nehmen
>soll,

Den aus dem Datenblatt?

>Was für einen RAM-Baustein brauche ich, größe 64kB, Spannung 5V

http://www.reichelt.de/?SID=27iKp@kKwQARsAAC8Geoc271bee5c58f3bc2589a1891f65248537;ACTION=2;LA=2;GROUPID=2954

Nimm einen grösseren und lege die überzähligen Adresspins auf GND oder 
VCC.

>Was für ein Latch brauche ich, das HC573 soll ja anscheinend zu langsam
>sein.

Naja, bis 8 MHz geht HC ofiziell noch, danach wird AHC empfohlen.

Das sollte auch gehen.

http://www.reichelt.de/?SID=27iKp@kKwQARsAAC8Geoc271bee5c58f3bc2589a1891f65248537;ACTION=3;LA=2;GROUP=A224;GROUPID=2936;ARTICLE=40644;START=0;SORT=preis;OFFSET=1000

MfG
Falk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Müller wrote:

> Nun die Fragen:

Wie heißt es doch so schön: ``If all else fails, read the
instructions.''  In diesem Falle also einfach mal ins Datenblatt
gucken.

> Was für ein Latch brauche ich, das HC573 soll ja anscheinend zu langsam
> sein.

Da steht zum Beispiel im Abschnitt ``External Memory Interface'' unter
der Überschrift ``Address Latch Requirements'':

Due to the high-speed operation of the XRAM interface, the address
latch must be selected with care for system frequencies above 8 MHz @
4V and 4 MHz @ 2.7V.  When operating at conditions above these
frequencies, the typical old style 74HC series latch becomes
inadequate. The External Memory Interface is designed in compliance to
the 74AHC series latch. However, most latches can be used as long they
comply with the main timing parameters. [...]

74AHC scheint bei den Bauteilhökern nicht sehr gängig zu sein, musst
dir mal die Timingparameter ansehen, was man alternativ dafür nehmen
kann.

> Wie muß ich das ganze Verschalten? Es wird doch irgendwo pläne geben
> die erprobt sind oder?

Datenblatt, auf der gleichen Seite.

> Noch als Anmerkung, ich Programmiere in Bascom (bitte nicht
> hauen...)  und habe mir den Plan der dort in der hilfe zu finden ist
> auch schon angesehen, nur bezieht sich der auf einen Mega8535.

Ganz sicher nicht. ;-)  Der ATmega8535 hat nämlich gar kein externes
Speicher-Interface.  Vermutlich meinst du den ATmega8515, aber in der
Tat, das XMEM-Interface ist seit Jahren im Prinzip gleich geblieben
(dass die entsprechenden Bits teilweise in verschiedenen Registern
sind, wird Bascom für dich wahrscheinlich selbst handhaben).

von Müller (Gast)


Lesenswert?

@Michael G.

ich kann nicht verstehen warum immer auf die Bascom-User eingedroschen 
wird, nicht jeder muß gleich mit C anfangen zu programmieren oder? :) 
Außerdem brauche ich den ext. Speicher für ein Projekt in dem ich sehr 
große mengen an Variablen im RAM ablgen muß deshalb bin ich nicht sicher 
ober der interne RAM reicht und sorge sicherheitshalber vor. Ich möchte 
nicht nach der Platinenherstellung merken das das RAM doch nicht reicht 
und dann anfangen alles noch mal aufzubauen.. Logisch oder ;-)

@Falk Brunner,

danke für die Tipps, wo kann ich die benötigten Infos nachlesen welche 
Adresspins ich auf masse oder VCC (macht das nen unterschied?) legen 
muß?

Mals sehen wo ich nen AHC herbekomme, den von reichelt bestell ich mir 
sicherheitshalber mal trotzdem :)

Grüße
Müller

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>wo kann ich die benötigten Infos nachlesen welche
Adresspins ich auf masse oder VCC (macht das nen unterschied?) legen
muß?

Alle nicht benötigten Adressleitungen. Die Reihenfolge ist Wurst. Du 
willst nicht wirklich wissen, wo die Bytes physisch im SRAM landen, von 
außen sind sie genau da, wo Du sie erwartest (aus Sicht des 
Controllers).

von Peter (Gast)


Lesenswert?

Ich hasse Leute die die Adress- und Datenleitung willkürlich an das RAM 
legen. Die Funktion ist zwar die gleiche, aber wenn man was messen muss 
hat man nur Sauerkraut.
Wenn eine Platine gemacht wird, kann man doch die richtige Zuordnung 
machen. Im Fehlerfall ist es einfacher zu messen. EIn wenig Struktur hat 
noch nie geschadet.
Aber jeder so wie er mag...

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

> ich kann nicht verstehen warum immer auf die Bascom-User eingedroschen?
> wird, nicht jeder muß gleich mit C anfangen zu programmieren oder? :)

Naja... Mikrocontroller und BASIC sind fuer mich halt ein Widerspruch 
und BASIC selber erst... ich hab mal bissel mit der C-Control kokediert 
aber da bin ich sehr schnell wieder von abgekommen, das is ne Krankheit. 
Aber soll mal jeder machen wie er meint, Du musst ja damit leben, und 
wenn Du das kannst isses ja OK.

Michael

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Ich hasse Leute die die Adress- und Datenleitung willkürlich an das RAM
>legen.

Hmmm - zur Kenntnis genommen. Hast Du schonmal eine Platine, auf der 
sehr wenig Platz ist, layoutet? Wenn ja, dann kannst Du mitreden. Am 
SRAM muß man nichts messen, wenn das Programm hinhaut und der Controller 
das macht, was er soll. Bei einem Hardware-SRAM-Interface braucht man 
nicht zu diskutieren, das ist genau dafür gemacht worden.

>EIn wenig Struktur hat noch nie geschadet.

Dem stimme ich zu (wenn man sich den Luxus leisten kann), läßt sich aber 
nicht immer machen.

von Peter D. (peda)


Lesenswert?

Ich bin mir ziemlich sicher, daß Bascom max etwas unter 56kB externen 
SRAM ansprechen kann, wenn es überhaupt externen SRAM unterstützt.

Darüber müßte nämlich gebankt werden.


Peter


P.S.:
Der wirkliche RAM-Bedarf wird von Entwicklern aus der PC-Welt oft maßlos 
überschätzt. Beim Programmieren werden dann die KBytes völlig sinnlos 
nach dem Gießkannenprinzip alloziert.

von Peter (Gast)


Lesenswert?

-->Hast Du schonmal eine Platine, auf der
sehr wenig Platz ist, layoutet?
ich habe inzwischen bestimmt 400 Platinen layoutet, aber so einen Pfusch 
fange ich nicht an.
Mit der Argumentation wenn alles läuft braucht man nix zu messen kann 
man nach der Layouterstellung also getrost den Schaltplan wegwerfen, 
oder wie?
Wie gesagt, jeder wie er meinst es machen zu müssen

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>ich habe inzwischen bestimmt 400 Platinen layoutet, aber so einen Pfusch
>fange ich nicht an.

Hört hört - die waren wahrscheinlich alle im Euro-Karten-Format ;-)

>Mit der Argumentation wenn alles läuft braucht man nix zu messen kann
>man nach der Layouterstellung also getrost den Schaltplan wegwerfen,
>oder wie?

Jetzt übertreibst Du.


Schönes Wochenende.

von Simon K. (simon) Benutzerseite


Lesenswert?

Peter wrote:
> ich habe inzwischen bestimmt 400 Platinen layoutet, aber so einen Pfusch
> fange ich nicht an.

Was ist denn jetzt eigentlich daran Pfusch?

von Falk B. (falk)


Lesenswert?

@ Simon Küppers (simon)

>> ich habe inzwischen bestimmt 400 Platinen layoutet, aber so einen Pfusch
>> fange ich nicht an.

>Was ist denn jetzt eigentlich daran Pfusch?

Naja, ist eher Geschmackssache. Bei einem einfachen SRAM geht das ohne 
Probleme. Bei einem SDRAM sollte man das lassen, zumindest beim 
Adressbus ;-)

MFG
Falk

von Müller (Gast)


Lesenswert?

@Michael G.,

ich muß fairerweise sagen das Bascom nicht so hardwarenah ist wie C, 
aber du wirst mir sicher recht geben wenn ich sage daß Bascom eben wegen 
der Basic-ähnlichen struktur viel schneller erlernt ist als C. Wenn ich 
beim ersten reinfühlen in die Microcontroller-Welt gleich mit C 
konfrontiert geworden wäre, ich denke das hätte mich, muß ich ehrlich 
zugeben, überfordert und ich wäre bei meinen Analog & TTL-Gräbern 
geblieben.
Als Einstieg ist Bascom meiner meinung nach ideal und ich bin bis jetzt 
sehr zufrieden damit. Ich konnte meine bis jetzt leider erst wenigen 
projekte bis jetzt immer damit lösen, also warum sollte ich umsteigen? 
Zugegeben wenn es sehr kompliziert wird (Stichwort Webserver auf dem 
ATmega o.ä.) da wird mit ziemlicher sicherheit C das mittel der wahl 
sein.
Übrigends, C-Control und Bascom zu vergleichen ist wie Äpfel mit Birnen 
vergleichen. Die einzige gemeinsamkeit ist das ein AVR drin ist :-) Die 
Programmiersprache von der C-Control ist in mehreren Punkten von Bascom 
verschieden und lange nicht so strukturiert, zumindest meiner Meinung 
nach. Ich habe mir mal die mühe gemacht und diese etwas verglichen da 
ich auch die C-Control anfangs im auge hatte. Allerdings ist das teil so 
teuer daß ich mir daß nicht leisten kann :( und selber basteln ist doch 
viel schöner und man lernt mehr :))

@Peter Dannegger,
Bascom unterstützt laut Manual 64K externes ram, das Ansprechen erfolgt 
mit dem XRAM-Befehl. Bei einem Demoboard bei einem Kollegen klappt das 
sehr gut, das hab ich mir mal ein paar Tage ausgeliehen zum testen. 
Leider hat der Hersteller das nach der bestückung wunderbar tiefblau 
lackiert und die Chipbezeichnungen weggefräst, somit ist nix mit reverse 
engineering :(
Ramumschaltung (=Banking wenn ich das richtig verstanden habe) will ich 
auf keinen fall machen, 64K sollte für mein Projekt dicke reichen.. :-)

Grüße
Müller

von Peter D. (peda)


Lesenswert?

Müller wrote:

> Bascom unterstützt laut Manual 64K externes ram, das Ansprechen erfolgt
> mit dem XRAM-Befehl.

Dann kann es ja mehr, als Atmel erlaubt ???

Der ATmega2560 kann nämlich nur knapp 56kB extern adressieren, alle 
Adressen bis zum Ende des internen 8kB SRAM werden nicht extern gemappt.


Man kann mit einem Softwaretrick die unteren 8kB eines externen 64kB 
SRAM nach 0x8000 spiegeln, d.h. an 0x8000 hat man dann 2 8kB RAM-Bänke, 
die man per Software auswählt.

Das reduziert natürlich drastisch die Performance und sollte man nur 
dann machen, wenn man wirklich die vollen 72kB braucht, also nicht mehr 
mit 8kB intern + 56kB extern auskommt.


Peter

von Simon K. (simon) Benutzerseite


Lesenswert?

Müller wrote:
> @Michael G.,
>
> ich muß fairerweise sagen das Bascom nicht so hardwarenah ist wie C,
> aber du wirst mir sicher recht geben wenn ich sage daß Bascom eben wegen
> der Basic-ähnlichen struktur viel schneller erlernt ist als C.

Genau das ist eigentlich das Problem: Leute beschäftigen sich nicht mit 
dem Chip, bzw. mit dem dazugehörigen Datenblatt, sondern vielmehr mit 
"Blackboxes", wie BASCOM sie bereitstellt.

Und diese "Blackboxes" sind unter anderem (in der Regel) wesentlich 
langsamer und unflexibler, als selbst-geschriebene Funktionen, bzw. 
(LowLevel-) C-Libraries.

Zumindest meine Meinung. Aber wer mit BASCOM auskommt, soll dabei 
bleiben.

von Roland Z. (r-zimmermann)


Lesenswert?

Nana, jetzt macht den Müller doch net so fertig hier ist nen Kollege von 
mir tztz

Zum Thema Bascom,
ich vermute mal daß er zwar in das Helpfile bei Bascom gesehen hat aber 
den Text nicht komplett zuende gelesen hat. Das Bascom den unteren 
Adressbereich im Externen Ram nicht nutzen kann wird dort zwar erwähnt 
aber meiner meinung nach für Anfänger etwas unverständlich erklärt. 
Dieser "untere" Adressbereich wird nämlich wie Peter schon schrieb von 
dem "internen" SRAM des Megas quasi "verdeckt".

So jetzt werde ich mich mal outen:
Ich habe auch mit Bascom angefangen und benutze es je nach zu lösender 
Problemstellung heute auch noch ab und zu mal.
Meine Hauptprogrammiersprache (was für ein Wort g) ist jedoch nachdem 
Bascom ein wenig zu unflexibel wurde (Stichwort State-Machine, Arrays 
usw) ebenfalls C geworden. Allein schon aus dem Grund da C quasi 
"Systemübergreifend" ist und nicht nur an eine bestimmte uC-Familie 
gebunden ist.

@Simon,
ich kann dir nur teilweise recht geben, auch Bascom ersetzt keinesfalls 
den Blick ins Datenblatt! Im Gegenteil diese Hochsprache hat es so an 
sich (damals meine eigene Erfahrung) daß man sich die schönsten 
Programmierstrukturen ausdenkt und erst bei der Realisierung dieser 
merkt, daß einem noch ein Haufen Hintergrundwissen, insbesondere auf der 
"Chip-Ebene" fehlt. Das bekommt man jedoch nur aus dem Datenblatt.
Aber wie du schon schriebst Bascom oder C = leben und leben lassen, 
jedem wie er mag... ;)

Einige muß man halt die ersten paar male mit der nase in den 
Datenblättern drauf stoßen (sorry konnte ich mir nicht verkneifen g)


Michael G. wrote:
>> Noch als Anmerkung, ich Programmiere in Bascom (bitte nicht hauen...)
>
> Das klaert zumindest die Frage wozu Du den zusaetzlichen Speicher
> brauchst... *jokingly

Diesen Kommentar hätte es glaube ich nicht wirklich gebraucht, soooo 
schlecht ist das Speichermanagement von Bascom nicht. ;) Bei einem 
vermurksten Programmstil oder falschem Variablen-Handling füllst du auch 
mit C ruckzuck den RAM bis Anschlag auf :)) Dann rauscht dir unter 
Umständen der Stack in Variablen rein und der uC sagt daraufhin beim 
nächsten Rücksprung Tschüß. :)) Es kommt auf die Art des Programmierens 
an und nur weniger auf die verwendete Sprache (okok, es gibt Ausnahmen, 
aber die rangieren weit unter C und Bascom)

So und jetzt fahr ich heim (bin noch in der Firma)

MfG
Roland

von Hagen R. (hagen)


Lesenswert?

>Nimm einen grösseren und lege die überzähligen Adresspins auf GND oder
>VCC.

Das wäre Verschwendung. Die überzähligen Adressleitungen am besten an x 
Pins des AVR's anschließen. So kannst Du, musst aber nicht, später per 
Bankswitching auf diese zusätzliche RAM zugreifen. Ein 64Kb SRAM wird 
meistens teuerer und schwerer beschaffbar sein als ein 512Kb SRAM.

Schau mal bei www.kessler-elektonic.de rein.

> ich habe inzwischen bestimmt 400 Platinen layoutet, aber so einen Pfusch
> fange ich nicht an.

Pfusch wäre es wenn dann im Layout unnötig kompliziert geroutet werden 
muß nur weil der Designer meint das es schick ist die 
Adress-Datenleitungen 1 zu 1 zu routen. Was soll das bringen ?

Also ich verbinde das nach Layout Anforderungen, falls nicht 
verschiedene Geräte quasi parallel darauf zugreifen müssen.

Gruß hagen

von Peter (Gast)


Lesenswert?

Verstehe ich nicht, es wird doch ein Schaltplan gemacht. Da werden die 
Adress- und Datenleitungen dem RAM zugeordnet.
Dann wird geroutet, zu diesem Zeitpunkt stimmt doch schon die Zuordnung.
Im Umkehrschluss würde das bedeuten, es wird erst nach Gusto geroutet 
und dann im Schaltplan die Zuordung der Pins korrigiert.

von Hagen R. (hagen)


Lesenswert?

Korrekt so ähnlich gehe ich vor, als Hobby-Bastler der sehr viel Zeit 
hat ;)

Ich arbeite also quasi gleichzeitig am Schaltplan und Layout. Als erstes 
mal ganz normal alles schon verküpft. Zb. weil ich es erhahnen kann 
vertausche ich die Reihenfolge der Datenleitungen schon im Schaltplan 
weil ich weiß das sich das auf Grund der Bauformen der Cips besser 
routen lässt. Später fintune ich das Layout und da kommt es schon vor 
das ich 2 Leitungen im Schalplan aufdrösel um sie besser, also ohne 
Überkreuzungen routen kann.

Letzendlich ist es mir dann egal welche Daten- Addressleitung im 
Schalplan wo verdrahtet sind. Es ist für die Funktion meistens egal.

Gruß Hagen

von Falk B. (falk)


Lesenswert?

@ Simon Küppers (simon)

>Genau das ist eigentlich das Problem: Leute beschäftigen sich nicht mit
>dem Chip, bzw. mit dem dazugehörigen Datenblatt, sondern vielmehr mit
>"Blackboxes", wie BASCOM sie bereitstellt.

Nicht notwendigerweise. Ausserdem schon mal was von Lernkurve gehört? 
Einen Anfänger im Programieren UND uC gleich mit nem AVR Datenblatt und 
Registern zuballern ist nicht so pädagogisch wertvoll.

>Und diese "Blackboxes" sind unter anderem (in der Regel) wesentlich
>langsamer und unflexibler, als selbst-geschriebene Funktionen, bzw.
>(LowLevel-) C-Libraries.

Vollkommen egal, für Anfänger zählt in erster Linie die leichte 
Anwendbarkeit und das Abfangen der meisten Fehler durch den Compiler. 
Was bei C keineswegs gegeben ist. Als ich mit C angefangen habe war isch 
schon sehr fit in Programmierung mit Assembler, Pascal und Basic. 
Trotzdem habe ich geflucht wie drei Bierkuscher, weil mich diese scheiss 
C-Syntax mit seinen tausend kleinen, aber gemeinen Unterschieden beinahe 
in den Wahnsinn getrieben hat.

>Zumindest meine Meinung. Aber wer mit BASCOM auskommt, soll dabei
>bleiben.

Erstens das, und wer wirklich mehr will, kann leicht auf C umsteigen, 
wenn er schon ein Feeling fürs Programmieren und den Controller bekommen 
hat.

"Wer fliegen will, muss erst laufen lernen. Man kann nicht mit dem 
Fliegen anfangen".

Friedrich Nietzsche

Philosophische Grüsse
Falk

von Peter D. (peda)


Lesenswert?

Peter wrote:
> Verstehe ich nicht, es wird doch ein Schaltplan gemacht. Da werden die
> Adress- und Datenleitungen dem RAM zugeordnet.
> Dann wird geroutet, zu diesem Zeitpunkt stimmt doch schon die Zuordnung.
> Im Umkehrschluss würde das bedeuten, es wird erst nach Gusto geroutet
> und dann im Schaltplan die Zuordung der Pins korrigiert.


Der Schaltplan ist bei mir immer der Master.
Wenn ich sehe, daß sich 2 Gummifäden kreuzen, gehe ich in den 
Schaltplan, sehe nach, ob sie vertauschbar sind und vertausche sie. Dann 
route ich weiter.


Ich finde im Gegenteil, an einem PCB läßt sich viel besser messen und 
Fehler suchen, wenn nicht alle Netze über tausende Vias gehen, sondern 
möglichst direkt.


Auch sagt mein Platinenhersteller, daß Vias unter 0,3mm Bohrdurchmesser 
teurer sind und nen Restring sollte ich auch lassen. Ein Via kostet also 
mindestens 3 Leiterbahnen an Platz.
Wenn ich von nem 144 Pinner mit 0,5mm Pitch erstmal jeden Pin auf nen 
Via route, kostet das ne Menge Platz.
Und jeder Via kann ne potentielle Unterbrechung sein (geringere 
Zuverlässigkeit). Ich hatte das mal, daß ein Via bei leichter Biegung 
der Platine den Kontakt verlor.


Ich bin also der Meinung, optimiertes Routen lohnt sich auf jeden Fall.


Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Wenn ich sehe, daß sich 2 Gummifäden kreuzen, gehe ich in den
>Schaltplan, sehe nach, ob sie vertauschbar sind und vertausche sie.

...

>Ich bin also der Meinung, optimiertes Routen lohnt sich auf jeden Fall.

Danke Peter.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.