Forum: Mikrocontroller und Digitale Elektronik Wie kann ich externe Datenspeicher ansprechen?


von Alexander _. (bastlwastl)


Lesenswert?

Tag Leute

Ich hab meinen ISP-Programieradapter endlich zum Laufen gebracht und
gleich IC-Sockel auf dem Prommer eingebaut damit ich mir den MC nicht
mehr so leicht schieße.

Da ich mich jetzt einigermaßen eingearbeitet habe will ich mal an neue
Bereiche ranwagen.

Mich würde es interessieren ob und wie ich mit einem ATmega8 bzw 16
Ram-Module oder Speicherkarten ansprechen kann.

Kann mir jemand sagen wo ich Informationen/Tutorials darüber finde?

mfg Alex

von Philipp Sªsse (Gast)


Lesenswert?

Soll ich das jetzt wirklich schreiben? Na gut:

Externes RAM ansprechen: im Datenblatt des µC nachlesen, ob und wie es
geht.

Speicherkarten: im Datenblatt der Speicherkarte nachlesen. Am
einfachsten wird es wegen der einfachen Schnittstelle mit MMC-Karten
(im Midi-Rekorder-Projekt hier findest Du ein Vorbild dafür).


Und wenn dann noch (konkrete) Fragen kommen, gibt es auch eine Chance,
konkret zu antworten.

von Alexander _. (bastlwastl)


Lesenswert?

Ich dachte da an alte PC-Ramriegel

Oder eventuell auch an andere Ramspeicher.

Sind MMC-Karten nicht eine Art Prom?
Da die Daten ziemlich oft geschrieben werden, sind EEProm und ähnliche
Speichermedien nicht umbedingt geeignet.

Ich habe vor eine Art Datenpuffer zu bauen.

Das Ganze sollte ungefähr so aufgebaut sein:

Über einen/zwei Pin/s werden die Daten gesammelt und in den externen
Speicher zwischengespeichert.

Wenn der Speicher voll ist, werden die Daten über UART an einen PC oder
eine SPS gesendet.

Dass Problem ist nämlich dass Daten in "Signalbursts" ankommen die
für die bis jetzt zur verfügung stehenden Schnittstellen zu schnell
sind.

Da ich aber mit dem Mikrokontroller programieren erst am Anfang bin
frage ich hier nach ob und wie das am Besten Daten extern abspeichere.

von Quark (Gast)


Lesenswert?


von Philipp Sªsse (Gast)


Lesenswert?

MMC-Karten sind Flash, also noch schlechter als EPROM. Faustformel:
Flash kann man 10.000 mal beschreiben, EEPROM 100.000 mal.

Wenn Du eine kleine MMC-Karte, sagen wir 64 MByte, jeweils komplett
beschreibst, bevor Du sie überschreibst, sind das also 640 GByte Daten,
die Du sammeln kannst, bevor Du die Karte tauschen mußt.

Wenn Du ständig gerade so viel Daten aufzeichnest, wie Du über eine
schnelle UART mit 115 kBit/s übertragen kannst, kannst Du immer noch
zwei Jahre Tag und Nacht aufzeichnen.

Soviel, um die Verhältnisse zurechtzurücken: die begrenzten
Schreibzyklen sind in der Praxis fast immer egal.

Ein größeres Problem könnte die Schreibgeschwindigkeit sein. So ein
"Burst": welche Datenmenge in welcher Zeit wird das ungefähr sein?

von Alexander _. (bastlwastl)


Lesenswert?

@Quark

Danke für den Link.

Da hab ich wieder genug zu lesen

@ Philipp Sªsse

Wie der Burst genau aussehen wird weis ich nicht genau.

Jedenfalls wird er für den seriellen-, parrallelen- und den Gameport zu
schnell sein.

Und die Datenmengen werden für den internen Speicher eines ATmega8 bzw
ATmega16 höchstwarscheinlich zu groß sein.

Die Pausen zwischen den Erfassungen werden aber sicher nicht kritisch
sein.
(1 bis 10 Sekunden)

Das muß ich noch genau durchplanen und durchdenken.

mfg Alex

von Alexander _. (bastlwastl)


Lesenswert?

Tag Leute

Ich hab gerade wieder einen alten Rechner ausgeschlachtet und da bin
ich auf merkwürdige Speicherriegel gestoßen.

Dieser Riegel hat 30 Pins mit denen man ihn direkt in das Steckbrett
stecken könnte.

Auf dem Riegel sind 3 SMD-IC's.

Einer hat die Bezeichnung KM41C256J-8 und besitzt 18 Pins.
2 haben die Bezeichnung GM7IC4256AJ80 oder GM71C4256AJ80 und hanen 20
Pins.

Weis jemand welcher Ram-Typ das ist oder eventuell sogar wie da die
Pinbelegung ist?

mfg Alex

von Hannes L. (hannes)


Lesenswert?

Das sind SIP, eine andere Bauform von SIMM.

Wenn du die mit dem Mega8 vernünftig (nicht nur als WOM) ansprechen
kannst, dann ziehe ich den Hut vor dir.

...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist ein sogenanntes SIPP mit 265 kByte Speicherkapazität. Es ist mit
9 Bit Breite (8 Datenbits und ein Parity-Bit) organisiert.

Die zwei gleichen Speicherbausteine sind einfache Page-Mode-DRAMs mit
256 k * 4 Bit Kapazität, das einzelne hat 256 k * 1 Bit Kapazität.

Verbreiteter als das SIPP ist das im Grunde genommen baugleiche SIMM,
an das nur keine Beinchen angelötet sind.
In dieser Bauform gab es auch größere Speichermodule mit 1 MByte oder
sogar 4 MByte Kapazität.

Üblich waren diese Speichermodule in PCs der 286er Ära über 386er bis
hin zu frühen 486ern.

Ein Modul mit 256 kByte Kapazität ist ... ziemlich uninteressant, da es
verhältnismäßig aufwendig anzusteuern ist und SRAMs mit der doppelten
Kapazität recht verbreitet sind.

von Hannes L. (hannes)


Lesenswert?

Aha, doch mit Doppel-p... Ich war mir nicht sicher...

;-)

...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da würde ich mich auch nicht unbedingt drauf verlassen, ob das nun mit
einem oder zwei Ps geschrieben wird.
SIM "single inline memory" oder "single inline module"
SIMM "single inline memory module"
SIP "single inline package"
SIPP "single inline pinned package"?

Letzlich sind viele Bezeichnungen für Speichermodule eh nur
Marketinggeschwurbel, wie die vollkommen schwachsinnige Bezeichnung
"PS/2"-Modul für 72polige SIMMs zeigt.

von Alexander _. (bastlwastl)


Lesenswert?

Danke.

Das wollte ich nur mal wissen.

Ich hatte schon vermutet dass diese Module nicht wirklich viel Speicher
bieten.

Ich hatte es mir nur überlegt weil diese Riegel schon die Pins
draufhatten.

Da ich 4 von den Riegeln habe habe ich mir gedacht dass ich da
"einfach" mit Bustreibern arbeite um die Daten hin und her zu
schupfen.

Obwohl wenn ich mir diese Antworten so durchlese mit 80 bis 95%
Ressourcenausnutzung rechnen müsste wenn ich diese Riegel verwende.

Das fällt wohl in die gleiche Kathegorie wie die einzelnen
Speichermodule (MB81C425-80B und HY53C256LS10) -> zu kleiner Speicher
für den Aufwand.

Was ist eigentlich der grundlegende Unterschied zwischen S-Ram, D-Ram
und den anderen PC-Ramriegeln die es giebt?

mfg Alex

von Hannes L. (hannes)


Lesenswert?

Erkundige dich mal nach Refresh.
Den Unterschied der einzelnen Speichertypen solltest du mal selbst
recherchieren (recherchieren, nicht andere Leute fragen). Denn solange
du dich da nicht auskennst, wirst du auch keinen externen Speicher an
einen AVR anschließen können.

Übrigens zieht jede (in einem Forum) beantwortete Frage mindestens zehn
weitere offene Fragen nach sich. Willst du die denn alle hier stellen?
Oder ist es nicht besser, selbst tätig zu werden.

...

von Alexander _. (bastlwastl)


Lesenswert?

Tag

Ich habe nur desswegen nachgefragt weil wenn ich Google frage bekomme
ich nur Kaufangebote.

Und da ich schon so gut wie alle PC-Ramriegel-Typen rumliegen habe,
will ich nicht wissen wo ich sie herbekomme sondern wie die Pinbelegung
ist, wie die Refreshzeiten sind und wie die geforderten
Komunikationsroutinen sind.

Da ich das Ganze erst lernen will und schon mancher in diesem Forum
damit beschäftigt hat, finde ich es besser mal nachzufragen wo ich die
Informnationen herbekomme als stundenlang erfolglos herumzusuchen.

Ich will ja das Rad nicht neu erfinden, sondern von den Erfahrungen der
Anderen profitieren.

mfg Alex

von Hannes L. (hannes)


Lesenswert?

Es hat keinen Sinn, mit diesen alten dynamischen Speichermodulen herum
zu experimentieren. Es ist vergeudete Zeit.

Wenn du unbedingt viel RAM am Controller brauchst, dann versuche es
erstmal mit SRAM. In den Datenblättern der AVRs mit RAM-Interface (ab
8515...) findest du reichlich Hinweise dazu. Sowohl zum Anschluss (mit
Adresslatch) als auch zum Ansprechen.

Ansonsten bieten sich zum Datenloggen einschlägige Speicherkarten an,
z.B. MMC/SD (relativ einfach), SM (geht auch noch, braucht aber mehr
Pins) oder CF (braucht auch mehr Pins).

Wenn dir das nicht reicht, weil es dir zu langsam oder zu wenig
Speicher ist, dann solltest du überdenken, ob der AVR für deine Zwecke
überhaupt geeignet ist.

> Ich will ja das Rad nicht neu erfinden, sondern von den Erfahrungen >
der Anderen profitieren.

Nunja, "erfinden" muss man das Rad nicht neu, aber es ist sicher kein
Schaden, wenn man sich selber Gedanken über die Zusammenhänge macht,
bzw. wenn man es wenigstens versteht oder versucht zu verstehen.

Der nächste Schritt nach dem erfolgreichen Zusammenbau des ISP-Adapters
wäre das Durcharbeiten diverser Tutorials. Links dazu findest du hier
auf dieser Seite.
Dann solltest du dich um die AVR-internen Features (Timer, ADC...)
kümmern, da gibt es verdammt viel zu entdecken.

Der Weg zum souveränen Umgang mit externem Speicher ist sehr weit und
steinig, du solltest also den letzten Schritt nicht vor dem Ersten
machen.
Ein "erster Schritt" wäre z.B. das (steuerbare) Blinken einer LED mit
einem selbstgeschriebenen Programm unter Nutzung von Timer-Interrupt und
Software-entprellten Eingabetasten.

...

von Alexander _. (bastlwastl)


Lesenswert?

Weil du geschrieben hast dass ich endlich den ISP hinbekommen habe.

Der ISP war eigentlich von Anfang an in Ordnung.
Ich hab mir nur Mikrocontroller bei den Tutoriumsübungen irgendwie
beleidigt wodurch diese Strome geflossen sind.
Danach habe ich mir bei der Fehlersucherei die Resetleitung abgerissen.

Die Tutorials habe ich inzwischen durchgearbeitet und was wichtiger ist
verstanden.(Glaube ich jedenfalls.)
Inzwischen habe ich es hinbekommen dass der Mikrocontroller mit dem PC
über den LPT komunizieren kann.
Und dass mir der MC eine externe Spannung anzeigt hab ich mit "Wie sag
ich's dem Mikrokontroller" hinbekommen.

Das es nicht ganz so einfach ist die Ramriegel anzusteuern ist mir
klar.

Ich bin aber nicht einer vom Schlag:"Los gehn wirds an."
Ich sammle erst so viel Informationen wie's geht und versuche sie zu
verstehen.
Und da das sicher länger dauern wird, fange ich schon mal damit an
bevor ich alle Möglichkeiten des AVR's richtig verstanden habe.


Mir ist ein Mikroelektronik-Skriptum einer FH in die Hände gefallen.

Dadurch weis ich wie Arbeitsspeicher grundliegend aufgebaut sind, wie
sie grundliegend funktionieren und wie sie angesprochen werden.
(Leider alles nur theoretisch.)

Wie ich leider schmerzvoll erfahren mußte ist zwischen Theorie und
Praxis ein gewaltiger Unterschied.

Weiters habe ich PC-Ramriegel aller Art herumliegen die ich verwenden
will bevor ich für teuer Geld extra Speicher kaufe.
Außerdem dürften Ram-Riegel sicher leichter anzusprechen sein als
Bios-EEProms.

Mir schweben da ein paar Anwendungen für externe Ram vor.

Analogwerterfassung für den PC (Billigoszi), Datenaufzeichnung bei
Modellautos und Modellflieger, Mikrocontroller basierender
Logikanalyser(Der, der nur am PC ohne unterstützende Hardware
funtioniert ist zu langsam.),...

Mir ist aber klar dass es aber noch einige Zeit dauern wird bis ich
diese Ideen verwirklichen kann.

Man beschäftigt sich aber mit Mikrocontrollern um etwas zu lernen.
Die positive Nebenwirkung ist dass man sich erspart diverse Geräte zu
kaufen.

mfg Alex

von Hannes L. (hannes)


Lesenswert?

> Wie ich leider schmerzvoll erfahren mußte ist zwischen Theorie und
> Praxis ein gewaltiger Unterschied.

Das ist wohl wahr. Aber das haben viele Theoretiker noch nicht
bemerkt... ;-)

> Weiters habe ich PC-Ramriegel aller Art herumliegen die ich
> verwenden will bevor ich für teuer Geld extra Speicher kaufe.

Die haben wir alle herumliegen bzw. bereits entsorgt.

Deine geplanten Anwendungen sind ja ok. Ich hoffe, dass es dir
gelingt.

Ich bin anfangs auch voller Enthusiasmus an die Sache herangegangen,
habe aber schnell mitbekommen, dass Vieles eben doch nicht so einfach
ist, wie es anfangs scheint.

Bit- & Bytebruch... - und viel Erfolg...
...HanneS...

von Peter D. (peda)


Lesenswert?

"Außerdem dürften Ram-Riegel sicher leichter anzusprechen sein als
Bios-EEProms."

Irrtum !

EEPROMs sind ganz leicht anzusprechen, genau wie SRAMs.
Lesen geht ganz normal und beim Schreiben muß man nur warten, bis es
beendet ist (Bit 6 auf Toggle testen oder Bit 7 auf Komplement).

Und bei Flash muß auch nur ein Full-Erase oder Page-Erase Kommando vor
dem Schreiben abgeschickt werden.
Bzw. manche Flash müssen immer eine komplette Page schreiben (kein Byte
Write Support).


Peter

von Alexander _. (bastlwastl)


Lesenswert?

@HanneS
Weil du vorher geschrieben hast dass ich erst das Tastenentprellen
lernen muß.

Wie machst du's denn?

Bei 1 bis 2 "Tasten" verwende ich Wechsler-Taster bzw. Schalter die
ich über RS-FF Schaltungen an den MC gehängt werden.

Wenn's mehr taster werden verwende ich 0815 Mikrotaster die ich aus
nem alten Videorekorder rausgehohlt habe und entprelle sie
Softwaremäßig.

Dabei fasse ich immer 8 Taster zu einem Flag-Byte zusammen.
Sobalt eine Taste als gedrückt erkannt wird, wird das dazugehöhrende
Flag gesetzt.
Und solange dieses Flag gesetzt ist wird die Taste ignoriert.
Die Rücksetzung der Flag-Bytes erfolgt mit dem Timer0 im 100ms
Intervall.
Außer dass die Timer für andere Anweendungen benötigt werden.
Da werden die Bytes mit einem anderen Zeitintervall zurückgesetzt
solange der nicht zu kurz ist.
(<20ms)

Muß man eigentlich bei den Ram-Riegel die Platienen ätzen/fräsen oder
reicht da noch die 0815 Bastlerverdrahtung mit Klingeldraht und
Lochrasterplatienen?


@peter

Du machst mich neugierig.

Weist du wo ich unterlagen herbekomme die beschreiben wie ich die
Bios-EEProms beschreiben kann?

Das nur mal interessehalber, denn soviel ich weis kann man in
Bios-EEProms nur ein paar 100KB schreiben.

mfg Alex

von Hannes L. (hannes)


Lesenswert?

Zum Tastenentprellen...
Anfangs fragte ich Taster in einem sowiso vorhandenem Timer-Interrupt
ab. Die Taster teilten sich die Ports (des AT90S1200) mit einer
dreistelligen 7-Segment-Ziffernanzeige (durch Dioden entkoppelt, mit
gesteuertem Common-Pin)). Die Abfrage war also Teil der
Multiplex-Routine. Es funktionierte auch, man kann damit leben, ist
jedenfalls nicht erkennbar schlechter als viele Fernbedienungen oder
andere Industrielösungen.

Nachdem ich dann mal Peter Danneggers Entprellroutinen analysiert (und
verstanden!) hatte, nutze ich nur noch diese Algorithmen. Hierbei
wird/werden der/die Taster auch im Timer-Int abgefragt, aber eine
Änderung wird erst übernommen, wenn sie 4 Abfragen hintereinander
stabil angelegen hat. Die Routine stellt dem Hauptprogramm je Taste 2
Flags zur Verfügung. Das Eine zeigt den entprellten Tastenzustand an,
das Andere einen Tastendruck (Übergang von losgelassen auf betätigt),
auf den noch nicht reagiert wurde. Und das bei nur (glaube) 13 Takten
(habe jetzt keine Lust zum Nachzählen) CPU-Belastung in der Timer-ISR,
die nebenbei noch andere Arbeiten erledigt.
Näheres dazu findest du in der Artikelsammlung mit dem Suchwort
"entprellung".

Übrigens:
Timer kann man so einsetzen, dass sie mehrere Aufgaben erledigen
können.

...

von Sebastian (Gast)


Lesenswert?

Reicht eventuell die Übertragungsgeschwindigkeit von USB, um Dein
Datenaufkommen zu bewältigen? Dann könntest Du auf deinen Speicher
verzichten. Schau Dir doch mal www.ftdichip.com an. Wenn Du den AVR
über LPT schon mit Deinem Rechner reden lassen kannst, ist der FT245BM
eventuell das Richtige für Dich.

Sebastian

von basti (Gast)


Lesenswert?

gibbet denn keine fertigen controller für dram? das wär ja mal ne
aufgabe für die ganzen assembler-leute hier im forum, grins... Habe
auch zwei alte 486 MOBOs geschlachtet. da habe ich ein paar 32k sram
bausteine drauf gehabt, den ich auch benutzen werde. aber ein dram mit
controller, wo man sich keine sorgen machen brauch über timing etc das
wär schon geil

von Peter Dannegger (Gast)


Lesenswert?

"Weist du wo ich unterlagen herbekomme die beschreiben wie ich die
Bios-EEProms beschreiben kann?"

Es gibt zwischen den Typen kleine Unterschiede (Pagegröße usw.), man
muß also immer das konkrete Datenblatt lesen.

Die Kommandos (Erase) bestehen daraus, daß einfach bestimmte Daten an
bestimmte Adressen zu schreiben sind.


Peter

von basti (Gast)


Lesenswert?

das sind normal alles standard typen. findest du mit google immer was...

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.