Forum: Mikrocontroller und Digitale Elektronik ATMEGA mit XRAM?


von Wolfgang (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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...

ATMega8515

von Dennis (Gast)


Lesenswert?

Wenn es etwas mehr Flash sein darf als der Atmega8515 dann gibs z.B. 
noch den Atmega162.

von holger (Gast)


Lesenswert?

>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.

von Wolfgang (Gast)


Lesenswert?

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?

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


Lesenswert?

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.

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


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>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:
1
char variable;   // muss im internen RAM liegen
2
switch_to_bank(3);
3
char *ptr;
4
ptr = 0x22;
5
6
variable = *ptr;

von Wolfgang (Gast)


Lesenswert?

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?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

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.

von MCUA (Gast)


Lesenswert?

>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).

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


Lesenswert?

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.

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


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

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

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

OT,

>DIP-Affinität...
SMD? Das is das was der Affe nie tät :D

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


Lesenswert?

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. :-)

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

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


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>- 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

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


Lesenswert?

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.

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


Lesenswert?

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.

von MCUA (Gast)


Lesenswert?

>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.

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


Lesenswert?

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.

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


Lesenswert?

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.)

von MCUA (Gast)


Lesenswert?

>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.

von Wolfgang (Gast)


Lesenswert?

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

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.