CMOS Datenspeicherung auf simpel?

Apr 05, 2010 18 Replies

Hallo!



Hab da ne Aufgabe über die ich bissel grübel. Hab mir ach schon was skizziert, jedoch wollte ich hier erstmal fragen ob das überhaupt funktioniert.



Es geht um einen parallelen Datenbus mit 8bit Breite, welcher mit rund



1Hz seine Daten ändert. Nun soll über einen längeren Zeitraum bestimmte Zustände auf dem Bus mitgeloggt werden - und zwar immer dann wenn ein Triggerimpuls (auch 1s lang) erfasst wird.

Das ganze möchte ich gerne ohne µC und ohne lange programmiererei erschlagen.



Meine grobe Skizze in Worte gefasst:



Datenbus (5V CMOS) geht direkt auf die I/O's eines 28C256. Dessen Chip Enable liegt permanent auf GND, und Out Enable permanent auf Vcc (dient ja nur zum speichern, ausgelesen wird er im Programmiergerät).



Der Write Enable des 28C256 liegt über PullUp auf Vcc. Jedes mal wenn ein Triggerimpuls kommt, wird WE für 1-10ms auf GND gezogen.



Das Triggersignal (9V CMOS) steuert über einen Spannungsteiler



10k + 12,4k den Adresszähler (2 x 4022).

Damit der Adresszähler die Adresse nicht gleichzeitig mit der Speicherung im 28C256 ändert und sich das EEPROM verschluckt, möchte ich dem Spannungsteiler parallel zum 12,4k noch einige µF spendieren, damit der 4022 einige duzend ms verzögert triggert.



Die 2 x 8 Ausgänge der 4022 gehen dann direkt auf die Adressleitungen A0 - A14, das höchste übrige Bit des 4022 soll zur "Speicher Voll"-Meldung herrangezogen werden.



Weiterhin, um zu sehen wie voll oder leer das EEPROM noch ist, spiele ich mit dem Gedanken den Adressbus mit Low Power LED's anzeigen zu lassen.



Bevor ich die Teile zusammensuche und teilweise bestelle, würde ich aber hier erstmal fragen ob jemand sowas schonmal gemacht hat und Erfahrung damit hat. Laut Datenblatt eines AT28C256 scheint das wohl zu gehen, zumindest sehe ich da nix was meinem Vorhaben widersprechen könnte. Nichtmal vonwegen Timing.


Das ganze dient der Fehlersuche in einer Telemetrieanlage, die mehrfach (so 5-10 mal die Stunde) schwachsinnigen Binärsalat ausspuckt, sich dann aber wieder einkriegt. Das provisorische Teil soll den Zustand des Busses einfach bei jedem Fehler mitloggen, damit ich später sehen kann bei welchen Werten und mit welcher Häufigkeit das ganze passiert.



Grüße aus Dortmund



Jürgen Hüser


www.funktechnik-hueser.de

Zu sowas laesst Du Dich als HF Ingenieur herab? Also nee ... :-)

Manche Leute sparen sich den 10k und lassen das mutig in die Substratdiode reinknallen :-)

Das geht vermutlich nur wenn Du hiermit den Clock Eingang meinst. M.W. hat nur der Clock Input des CD4022 einen Schmitt Trigger.

Das wuerde z.B. mit festverdrahteten digitalen Comparators gehen. Over/Underflow.

Ok, sollte gehen, aber dann hast Du keinerlei Informationen zu welcher Zeit der Salat passierte. Damit wird es schwierig Fehler zu korrellieren nach dem Motto "Oh, da schmeisst doch der Jupp immer den Lastenaufzug an".

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Keine gute Idee. Das Signal würde sich viel zu lange im Störspannungsbereich aufhalten und der Zähler womöglich nur mehr Zufallszahlen zählen.

Entweder Du brauchst einen Schmitt-Trigger (40106 zum Bleistift), oder Du machst es gleich anders und triggerst den Zähler mit der steigenden Flanke von WE. Bis der gezählt hat, ist die Show ohnehin vorüber.

Da die Spannungspegel nicht stimmen, ist eine Signalaufbereitung via Schmitt-Trigger allerdings ohnehin angeraten.

:-) Zum Ablesen braucht man allerdings etwas Kopfrechnen. Plan B: R2R-Netzwerk an die obersten 8 Bit (A7-A14) und olles Drehspulinstrument dran. Sind auch nicht mehr Bauteile.

Naja, vergleichbare Bastelprojekte habe ich schon gemacht. Genau das sicher nicht.

Einen Enable- bzw. Reset-Schalter würde ich noch vorsehen, damit man das Teil kontrolliert starten kann. Nicht dass bei den ersten paar Spikes beim Anstecken schon alles durcheinander gerät.

Marcel

Der 4022 ist nur ein 3 bit, decodierter Zähler.

Der 4040 hätte 12 bit. Schau die mal genau das Datenblatt des at28c256 an.

Wenn du einen Inverter einsetzt kannst du mit der steigenden Flanke an WR den Zähler weiterzählen. Die Addresseingänge werden mit fallenden Flanke im at28c256 gespeichert. Du kannst die auch einen kurzen Writeimpuls verwenden da das schreiben intern getimed wird. RC-Glieder in Taktleitungen sind sowiso eine schlechte Idee.

Gernot

MFG Gernot

Jürgen Hüserschrieb: "

... und das geht jetzt schneller aufzubauen, als ein simples Entwicklungsboard für irgend einen Controller herzunehmen und da 10 Zeilen Code einzutippen, oder die Daten mit einem alten Laptop über den Druckerport einzulesen???

Also ich weiß nicht..

Dirk

Hallo!

Gernot Fink schrieb:

Ähm...Octalzähler. Clock Eingang und 8 Ausgänge...

Vom 4022 hätte ich aber noch ein paar rumliegen..:-)

Wenn ich das richtig verstanden habe, läuft das so: Steigende Flanke WE: Adresse wird gespeichert Fallende Flanke WE: Datenbus wird gespeichert.

Hmm, muss ich nochmal gucken wie ich das löse. Theoretisch reicht ja der Zeitpunkt wenn die WE auf GND fällt um (Inverter) den 4022 am Clock zu triggern.

Wer ich mir nochmal durch den Kopf gehen lassen.

Grüße aus Dortmund

Jürgen Hüser

www.funktechnik-hueser.de

In diesem Fall sollte das kein Problem sein, da der Clock des 4022 einen Schmitt Eingang hat.

formatting link
(Datenblatt enthaelt auch den 4022)

[...]
Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Hallo!

Dirk Ruth schrieb:

Ich aber:-)

Signale liegen alle an einer Sub-D15 inkl. Vcc. Das ganze in einer Art Unterverteilung - Wasserdichtes Kästchen in industrieller, dreckiger und siffiger Umgebung. Passt gut wenn ich da ne lose Platine reinhänge, aber viel mehr net.

Gut, hätte da noch nen Laptop mit Druckerport, aber den müsste ich erst auf 100x160x10mm zusammenhämmern, bevor der da rein passt. Nur dann nutzt der mir auch nicht mehr. :-)

Und wie das heute so ist: Darf nix kosten...

Also Lochraster, DIL-28 Fassung, bissel Draht - fertig.

Grüße aus Dortmund

Jürgen Hüser

www.funktechnik-hueser.de

[...]

Der 4022 hat am Clock einen Schmitt Eingang, kein Problem.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Oxtal= Zählt bis 8, 1 decodierter Ausgang pro Wert.

Andersrum. WE ist aktiv low.

Normalzustand ist WR high Mit der fallenden Flanke wird die Addresse gespeichert, Mit der steigenden die Daten, mit Inverter wird jetzt der Zähler erhöht. Jetzt beginnt der Schreibvorgang....

WE und clock direkt parallelschalten geht vom timing her gerade nicht mehr. Der 28c256 verhlangt 50 ns Address hold nach WR low. Der 4040 schaltet da aber schon die ersten bits um. Deshalb der Inverter.

MFG Gernot

Ich hab für solche Zwecke schon einen PIC 16C54 oder PIC16F627 verwendet. Heute würde ich das allerdings mit einem ATmega8 machen:

Eingänge je nach Eingangsspannung mit Spannungsteiler, eventuell Optokoppler beschalten. Gesendet wird per Soft UART, weil man da den Inverter (Max 232) sparen kann. Ausgangssignal dann als Pseudo RS232 (mit TTL-Pegel) auf den COM-Port eines PCs, oder auf einen RS232 Ethernet-Umsetzer, z.B. Moxa.

Wenn man es an einen PC hängt, kann man sogar die Stromversorgung aus dem COM-Port ziehen.

Das Programm besteht nur aus einer Endlosschleife, wo ein 8-Bit Port abgefragt wird und direkt gesendet wird. Wenn das Byte fertig gesendet ist, wird gleich das nächst Byte eingelesen usw.

Um Synchronisationsfehler zu vermeiden, läuft ein Zähler mit. Nach jeweils 256 Bytes wird eine Pause von einer Bytelänge eingefügt.

Das ganze wird etwa so groß wie eine Steichholzschachtel. Materialkosten ca. 5,- ?.

Gruß

Stefan DF9BI

Will er ja aus genannten und einsichtigen Gründen nicht. Man kann sicherlich den Logger mit Controller machen und z.B. serielles EEPROM 24C256 als Speicher verwenden. Hätte den Vorteil daß man timestamps und Prüfsummen mit ablegen kann.

Der Knackpunkt ist häufig: registriert werden soll Funktionsstörung. Häufig hat die ihre Ursache in der Versorgungsspannung ( Spikes, Brownout ). Versorgt man den Logger direkt aus der gleichen Betriebsspannung steigt der wahrscheinlich auch aus wenns interessant wird. Sollte man also alle Leitungen per Schutzschaltungen ( hochohmige Widerstände, Dioden ) sichern und die Versorgung des Loggers filtern und per Elko oder Batterie puffern.

MfG JRD

Hallo Jürgen,

schon, aber da wird nur eine 1 von Ausgang 0 bis 7 durchgeschoben. Das ist kein Binärercode, den Du da erwartest.

Wenn man nur einen Hammer hat... Hier brauchts aber anständige Verschraubungen

Marte

t

d.h. man k=F6nnte bestenfalls 64 Werte speichern. Ein 4040 mit 12 bit, also 4096 Werten w=E4re da sicherlich besser geeignet. Beim 4020 und 4060 sind ja leider nicht alle Ausg=E4nge rausgef=FChrt. =DCbrigens hat der 4040 auch einen Schmitttrigger- Clockeingang.

Komisch, der 4022 sieht gar nicht wie ein Hammer aus. Und ein Eprom nicht wie ein Nagel.:-)

ACK Gruss Harald

^^^

Oder sehen was sonst noch in der Bastelkiste rumfliegt. Vielleicht zwei

4-bit Zaehler aus der TTL Bastelzeit plus 7414 Schmitt oder so.

Duct Tape :-)

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

=A0 =A0 =A0^^^

Falls Du Dich dabei auf die Rechtschreibreform beziehst; dieses Wort wurde auch schon fr=FCher so geschrieben. :-) Man k=F6nnte h=F6chstens einen Bindestrich dazwischen machen. Gruss Harald

PS: Bist Du gerade beim Fr=FChst=FCck? (-9h)

Nee, das passiert meist um 7:00h, danach waren Simulationen mit dem Methusalem der PWM Chips dran, 34063. Spass macht das nicht gerade, die Dinger sind aetzend lahm.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Hallo Harald,

Ich weiss nicht, wie Du auf 64 kommst, ich komm genau auf 8.

Marte

8*8=64 :-) OP will 2 verwenden.
MFG Gernot

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required