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
> Noch als Anmerkung, ich Programmiere in Bascom (bitte nicht hauen...)
Das klaert zumindest die Frage wozu Du den zusaetzlichen Speicher
brauchst... *jokingly
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).
@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
>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).
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...
> 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
>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.
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.
-->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
>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.
Peter wrote:
> ich habe inzwischen bestimmt 400 Platinen layoutet, aber so einen Pfusch> fange ich nicht an.
Was ist denn jetzt eigentlich daran Pfusch?
@ 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
@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
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
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.
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
>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
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.
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
@ 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
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
>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.