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
>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
Wenn es etwas mehr Flash sein darf als der Atmega8515 dann gibs z.B. noch den Atmega162.
>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:
1 | char variable; // muss im internen RAM liegen |
2 | switch_to_bank(3); |
3 | char *ptr; |
4 | ptr = 0x22; |
5 | |
6 | variable = *ptr; |
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
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.