Hallo,
ich benötige einen uC im DIP-Gegäuse mit möglichst viel SRAM und habe
den ATMEGA644P-20PU gefunden, der 4k SRAM besitzt. Ideal wären aber 64
KB SRAM.
Kann man diesen uC mit XRAM erweitern? Das Datenblatt
http://www.atmel.com/dyn/resources/prod_documents/doc8011.pdf
sagt nicht viel dazu.
In der Historie habe ich die Bemerkung
"Removed reference to External Memory Interface in ”Alternate Functions
of Port A” on page 80." gefunden.
Das lässt vermuten, das der uC grundsätzlich XRAM verwalten kann.
Ein uC mit 64 KB SRAM wäre ideal, aber soweit ich das überblicke, gibt
es sowas nicht bei einem uC mit DIP-Gehäuse...
Wer kann mir zu einer XRAM-Erweiterung Tipps geben?
Grüße
Wolfgang
>Wenn es etwas mehr Flash sein darf als der Atmega8515 dann gibs z.B.>noch den Atmega162.
Und wenns kein AVR sein muss, dann einfach mal
bei den 8051ern nachsehen. Die gibts in DIP 40
und die haben alle ein ext. Memory Interface.
Vielen Dank für die Hinweise!
Ob ich mit dem kleineren Flash hinkomme, weiß ich noch nicht. Das
Programm ist noch nicht geschrieben...
Beim Atmega162 ist auch ein Codebeispiel im Datenblatt. Klasse.
Welche Speicherbausteine eignen sich für die Erweiterung?
Wolfgang schrieb:> Ob ich mit dem kleineren Flash hinkomme, weiß ich noch nicht. Das> Programm ist noch nicht geschrieben...
Viel Flash und externes RAM-Interface bekommst Du bei vielen ATMEGAs mit
64k Flash oder mehr. Allerdings musst Du Dich dann vom DIP
verabschieden.
Wolfgang schrieb:> Welche Speicherbausteine eignen sich für die Erweiterung?
Alle mit 64k x 8Bit Organisation. Weniger geht auch, bei mehr RAM muss
man bankweise umschalten. Wichtig ist die 8Bit-Datenbreite. Und
langsamer als 40ns sollten sie auch nicht sein, sonst muss der
Controller Wartezyklen beim Zugriff einlegen.
Knut Ballhause schrieb:> Und> langsamer als 40ns sollten sie auch nicht sein, sonst muss der> Controller Wartezyklen beim Zugriff einlegen
Danke für diesen Hinweis. Wenns 70ns sind - regelt der Controller das
von sich aus?
>Wenns 70ns sind - regelt der Controller das von sich aus?
Ja, du musst allerdings die Waitstates konfigurieren, steht im
Datenblatt bei den Registern zum XRAM.
Ich kann den mega162 nur empfehlen, hat eine "freundlichere" Pinbelegung
als die meisten anderen Megas und externes RAM lässt sich durch mehrere
Adress Leitungen als Chip-Select missbraucht nahezu unendlich ausbauen.
Ich hab hier eine Platine mit 512kb RAM dran.
64k über den Memory bus und die restlichen Adress-Leitungen auf Shift
Register gelegt und jenachdem welche ich aktiviere/deaktiviere hab ich
dann die jeweilige Bank mit RAM.
Allerdings muss man sich da selbst um die Speicherorganisation kümmern,
da kannste dann keine Variablen in C, BASCOM, ... einfach so in XRAM
legen.
Zugriff sieht ungefähr so aus:
Nils S. schrieb:> und die restlichen Adress-Leitungen auf Shift Register gelegt> und jenachdem welche ich aktiviere/deaktiviere hab ich dann die jeweilige> Bank mit RAM.
Das letzte mal, wo ich mit einer Bank-Umschaltung zu tun hatte, war beim
C64 - das RAM "unter" dem Basic-Interpreter :-)
Beim Atmel-Wissen (Hardware) stehe ich noch auf Einsteiger-Level;
Programmierung Assember und C kein Problem, aber Folgendes kannst Du mir
noch näher erklären:
"und die restlichen Adress-Leitungen auf Shift-Register gelegt"
Die Bank schaltet man wahrscheinlich an einem Pin am RAM-Baustein um,
oder?
Geh mal vom 64er aus. 64kb ist der gesamte Adressraum. Nun ist statt
einem ROM und RAM nur ein 64k RAM Baustein am Datenbus - Alles voll.
Das entspricht 16 Adressleitungen. Wenn der Chip nun 128kb hat, dann hat
er 17 Adressleitungen.
Die 16 Adressleitungen liegen ganz normal an und so greift die CPU drauf
zu. Nun schaltest du mir 17te auf 0 und du bist in der unteren Hälfte
des Speicherchips (0-64kb), wenn die 17te auf 1 liegt bist du in der
oberen Hälfte (64kb-128kb).
Allerdings muss man das von Hand machen, wenn der Compiler das nicht
unterstützt.
Ich hab bei mir 512kb RAM dran, heisst 19 Adressleitungen. Die
Adressleitungen vom AVR liegen ganz normal an und die Adressleitungen am
RAM-Chip welche noch offen sind gehen auf ein Shift Register. Jenachdem
welche ich setze, in dem entsprechenden Teil vom RAM bin ich.
Allerdings wie gesagt, vorsicht beim Zugriff auf Variablen im XRAM, wenn
die Bank nicht stimmt!
Nimm z.B den mega162 mit 1kB internem RAM und packe da nochmal 128kB
dran. Auf jeder Bank "verlierst" du das erste kb, das ist nämlich das
interne. Schau, dass Variablen nicht ausserhalb des internen RAMs landen
und in den externen packst du mit deinem eigenen Code zum Steuern des
RAMs die Daten, die du zwischenlagern willst.
Nach dem Prinzip arbeiten auch einige 8051 mit ihrem Flash. Habe z.B.
das Wickenhäuser Flash M1, das hat 512kb Flash, obwohl der 8051 nur 64kb
Adressraum hat.
>Nimm z.B den mega162 mit 1kB internem RAM und packe da nochmal 128kB>dran. Auf jeder Bank "verlierst" du das erste kb, das ist nämlich das>interne.
Nicht, wenn man Bänke je 32kB macht (und somit innerhalb den ersten 32kB
auch noch viel Freiraum für Periferie hat).
holger schrieb:> Und wenns kein AVR sein muss, dann einfach mal> bei den 8051ern nachsehen.
Und wenn's kein DIP sein muss, dann gibt's noch ATmega640, ATmega1280,
ATmega1281, ATmega2560 und ATmega2561, die alle ein XRAM-Interface
haben. Damit sollte wohl auch genügend Flash verfügbar sein ;-),
und bei den 100-Pinnern hat man trotz XRAM noch IO-Pins ohne Ende
übrig.
Nils S. schrieb:> Die 16 Adressleitungen liegen ganz normal an und so greift die CPU drauf> zu. Nun schaltest du mir 17te auf 0 und du bist in der unteren Hälfte> des Speicherchips (0-64kb), wenn die 17te auf 1 liegt bist du in der> oberen Hälfte (64kb-128kb).>> Allerdings muss man das von Hand machen, wenn der Compiler das nicht> unterstützt.
Vielen vielen Dank an Alle für die ausführlichen Erklärungen und
Vorschläge!
Jörg Wunsch schrieb:> Und wenn's kein DIP sein muss, dann gibt's noch ATmega640, ATmega1280,> ATmega1281, ATmega2560 und ATmega2561, die alle ein XRAM-Interface> haben. Damit sollte wohl auch genügend Flash verfügbar sein ;-),
Ich weiß. Allerdings kenne ich deren Abmessungen nicht und kann nicht
abschätzen, ob ich als ungeübter Löter diese winzigen Pins verlöten
kann; daher meine DIP-Affinität...
Ich habe mal nach bezahlbaren "Trägerplatinen" gesucht, also wo solch
ein uC draufgelötet ist und die Pins an einer Stiftleiste rausgeführt
sind. Ich habe bisher nichts Derartiges gefunden.
Grüße
Wolfgang
Wolfgang schrieb:>> Und wenn's kein DIP sein muss, dann gibt's noch ATmega640, ATmega1280,>> ATmega1281, ATmega2560 und ATmega2561, die alle ein XRAM-Interface>> haben. Damit sollte wohl auch genügend Flash verfügbar sein ;-),> Ich weiß. Allerdings kenne ich deren Abmessungen nicht und kann nicht> abschätzen, ob ich als ungeübter Löter diese winzigen Pins verlöten> kann
Die 64-Pinner lötest du, sofern du nicht nur eine Klempnergurke
zum Löten hast und genug Flussmittel nimmst, mit links und 40 °C
Fieber. Die 100-Pinner mit 0,5 mm Pinabstand sind zugegebenermaßen
etwas fummeliger, neben dem Flussmittel ist dort eine feine Entlöt-
litze dein Freund.
Legt einfach mal eure unbegründete Angst vor SMD-Bauteilen ab.
Das Zeug beißt nicht. :-)
Jörg Wunsch schrieb:> Legt einfach mal eure unbegründete Angst vor SMD-Bauteilen ab.> Das Zeug beißt nicht. :-)
Und es lässt sich wesentlich schneller verarbeiten.
Simon K. schrieb:>> Das Zeug beißt nicht. :-)>> Und es lässt sich wesentlich schneller verarbeiten.
Und nimmt weniger Platz weg, auch in der 3. Dimension.
Jörg Wunsch schrieb:> Die 64-Pinner lötest du, sofern du nicht nur eine Klempnergurke> zum Löten hast und genug Flussmittel nimmst, mit links und 40 °C> Fieber.
Du machst mir Mut ;-)
Ich will mir die ERSA-Lötstation RDS 80 zulegen.
Da wir schon etwas Off-Topic sind:
- Was nimmt man für Flussmittel? Taugen Flussmittelstifte was?
- Verlötet man so einen uC mit 350 oder 400 Grad?
- Mit welcher Lötkolben-Spitze; ist 1mm ok?
>- Was nimmt man für Flussmittel? Taugen Flussmittelstifte was?
Gar keins, Kolophonium gehörts ins Zinn rein, Flussmittel kannste
nehmen, wenn ein 20mm Kabel an ne Dachrinne löten willst...
Allerhöchstens noch Lötpaste bei extrem engen Pinabständen, aber davon
bist du noch weit weg ;)
>- Verlötet man so einen uC mit 350 oder 400 Grad?
Controller wenn möglich IMMER in einen Sockel stecken, irgendwo bei 330
Grad anfangen, höher gehen, sieht man ja dann was reicht.
SMD ebenfalls so niedrig wie möglich.
>- Mit welcher Lötkolben-Spitze; ist 1mm ok?
1mm für SMD, 2mm für Normale Platine
Wolfgang schrieb:> - Was nimmt man für Flussmittel? Taugen Flussmittelstifte was?
Flussmittelstifte taugen was, wenngleich man sowas bei bleihaltigem
Lötzinn eher selten brauch. Bei bleifreiem ist das im Zinn
enthaltene so schnell verdampft, dass man doch öfter mal was
"nachlegen" muss.
"No clean"-Flussmittel ist weniger aggressiv als andere, sodass
man es unter Bürobedingungen hinterher drauf lassen kann. (Für
einen Außeneinsatz muss allerdings auch das runter, sonst gammelt's,
wenn nur genügend Feuchtigkeit dazu kommt.)
Für hartnäckige Fälle habe ich noch 'ne Tube Löthonig, aber das Zeug
spritzt recht heftig durch die Gegend.
> - Verlötet man so einen uC mit 350 oder 400 Grad?
Sofern dein Lötkolben und Spitze genügend wärmeleitfähig sind, sind
320 °C für bleihaltiges und 350 °C für bleifreies Lötzinn der
Sollwert.
> - Mit welcher Lötkolben-Spitze; ist 1mm ok?
Ja, nicht dünner, sonst wird die Wärmeleitfähigkeit zu schlecht.
Viele Leute empfehlen eine Hohlkehle, bei der man in der Mitte ein
Zinn-Reservoir hat. Damit fährt man dann einfach die Pinreihe
lang, mit genügend Flussmittel bleibt auf jedem Pin nur so viel
hängen wie nötig. Zinnbrücken dann mit Entlötlitze entfernen.
Nils S. schrieb:>>- Was nimmt man für Flussmittel? Taugen Flussmittelstifte was?> Gar keins, Kolophonium gehörts ins Zinn rein
Du hast noch nie bleifrei gelötet, und wohl auch nicht mit einer
Hohlkehlen-Spitze.
> Allerhöchstens noch Lötpaste bei extrem engen Pinabständen, aber davon> bist du noch weit weg ;)
Die wiederum ist für eine Kolbenlötung nicht sinnvoll, sondern nur
für Heißluft oder Infrarot.
>>- Verlötet man so einen uC mit 350 oder 400 Grad?> Controller wenn möglich IMMER in einen Sockel stecken,
So'n Quark. Erstens haben wir gerade über TQFP-64-Gehäuse geredet,
aber selbst für DIL und Fassung gilt: Kontaktstellen sind schon immer
die Bauteile mit der höchsten Ausfallrate gewesen. Wenn man sie
vermeiden kann, dann lieber weg damit.
Allerdings lässt sich ein DIL-40 zugegebenermaßen viel schwerer wieder
auslöten als ein TQFP-64, von daher verstehe ich diesen "ich will
alles in 'ner Fassung haben"-Drang ein wenig. Für das TQFP genügt
eine einfache Heißluftpistole aus'm Baumarkt, damit man es wieder
komplett runter bekommt, ohne dass Bauteil oder Platine Schaden
nehmen.
>Allerdings lässt sich ein DIL-40 zugegebenermaßen viel schwerer wieder>auslöten
Nicht, wenn man den passenden Aufsatz dazu hat.
>Für das TQFP genügt eine einfache Heißluftpistole aus'm Baumarkt.....
Da ist aber schnell die ganze Platine 'verbrannt'. Heißluft-Zeugs kann
immer gefährlich sein.
Jörg Wunsch schrieb:> Sofern dein Lötkolben und Spitze genügend wärmeleitfähig sind, sind> 320 °C für bleihaltiges und 350 °C für bleifreies Lötzinn der> Sollwert.
Knapp 100°C weniger reichen auch! Da selbst bleifreies Lot bei 230°C
flüssig ist, ist jede Temperatur, die weit darüber liegt, nur schädlich.
Wenn man sieht, dass das Lot ausreichend fließt, ist die Temperatur der
Spitze hoch genug. FR4 zersetzt sich bereits ab 300°C, das sollte man
bedenken. Schaltkreise sind allermeist bei 270°C lediglich 10 Sekunden
spezifiziert.
MCUA schrieb:>>Allerdings lässt sich ein DIL-40 zugegebenermaßen viel schwerer wieder>>auslöten> Nicht, wenn man den passenden Aufsatz dazu hat.
Der dann natürlich nicht mehr auf ein DIL28 passt. :-/
Tut mir leid, ich bin froh, dass die Zeit, in der man DILs wieder
auslöten muss, vorbei ist.
>>Für das TQFP genügt eine einfache Heißluftpistole aus'm Baumarkt.....> Da ist aber schnell die ganze Platine 'verbrannt'. Heißluft-Zeugs kann> immer gefährlich sein.
Dann hast du die Pistole zu heiß gedreht. Lieber nicht ganz so heiß
und etwas langsamer. Üben kann man prima an altem Computerschrott,
wo's nicht drauf ankommt.
Mit DIL auslöten habe ich gegenteilige Erfahrungen gemacht: bei 40
Pins gibt's eigentlich mindestens ein oder zwei abgerissene Lötaugen.
Knut Ballhause schrieb:>> Sofern dein Lötkolben und Spitze genügend wärmeleitfähig sind, sind>> 320 °C für bleihaltiges und 350 °C für bleifreies Lötzinn der>> Sollwert.>> Knapp 100°C weniger reichen auch!
Du vergisst, dass es auch eines gewissen Temperaturgefälles bedarf,
damit sich die Wärme transportieren lässt, und dass "nur kurz über dem
Schmelzpunkt" eher zu kalten Lötstellen führt.
Die 320 °C / 350 °C sind übliche Werte, wie sie die Industrie benutzt.
±20 K würde ich gelten lassen, aber "knapp 100 K weniger" nicht.
(Temperaturdifferenzen werden nach SI immer in Kelvin angegeben.)
>Der dann natürlich nicht mehr auf ein DIL28 passt....
Dann nimmt man halt 2 Adapter.
>Dann hast du die Pistole zu heiß gedreht...
Oder der Abstand ist zu klein oder die Zeit zu lang oder Platine falsch
vorgewärmt oder die Platine anders gebaut oder sonst was....
Heißluft-Zeugs ist viel zu unsicher. Es gibt besseres.
Bei Reichelt gibt es folgenden Draht - sowas ist beim Inneneinsatz
vermutlich schon ok und nicht ganz so teuer wie bleifrei...
"LÖTZINN 32-1,025 :: Halogenfreier Lötdraht, 250g Rolle, 1,0mm, SN60"
Flussmittelgefüllter, halogenfrei aktivierter Weichlötdraht. Flussmittel
nach DIN EN 29454.1, 1.1.3.B bzw. DIN EN 61190-1-3, ROL0. No-clean
Standardlötdraht für Handlötungen in der Elektronik,
Standardflussmittelanteil 3,5%.
• Aufbau: Sn60 Pb40 F-SW 32 (1.1.3.B)
• Nach QQ-S 571 Halogenfrei
• Geringe Rauchentwicklung
• Ab 360 °C nahezu rückstandsfreies Löten
• bleihaltig/halogenfrei