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
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
> Noch als Anmerkung, ich Programmiere in Bascom (bitte nicht hauen...)
Das klaert zumindest die Frage wozu Du den zusaetzlichen Speicher
brauchst... *jokingly
@ 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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.