Forum: Mikrocontroller und Digitale Elektronik 12x BCD in Mikrocontroller einlesen


von F. P. (pl504)


Lesenswert?

Hallo!

Wie kann ich am besten 12 BCD-Ausgänge (also 48 Leitungen) in einem 
Mikrocontroller einlesen?

Ich dachte da an 6x 74374, deren Ausgänge parallelgeschaltet sind. Zum 
Abfragen könnte man deren Ausgänge nacheinander mit einem 
Schieberegister aktivieren, aber dort müßte zwischen den Flanken ja eine 
Pause sein, sonst würde man die Ausgänge zweier benachbarter 374 
kurzschließen. Das Entkoppeln mit 48 Dioden will ich mir sparen.

Wer hat eine Idee?

von Hans-Georg L. (h-g-l)


Lesenswert?

Du nimmst einen MC mit >= 48 Gpio.

von Chris D. (m8nix)


Lesenswert?

... oder du steuerst deine 74374 mit einem 3 To 8 Line Decoder 74238 an.

von holger (Gast)


Lesenswert?

6 x 74hc165

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Chris D. schrieb:
> 74238

74138. Statt der 374/373er Latches kann man aber auch einfach 244er 
nehmen.

von google (Gast)


Lesenswert?

F. P. schrieb:
> Wie kann ich am besten 12 BCD-Ausgänge (also 48 Leitungen) in einem
> Mikrocontroller einlesen?

Vor dem BCD-Dekoder kannst Du keine Signale abgreifen? Das würde den 
Aufwand vermutlich erheblich reduzieren.

Bitte auch lesen:
https://www.mikrocontroller.net/articles/Netiquette#Klare_Beschreibung_des_Problems

"Gerade am Anfang ist es immer gut zu sagen, was man insgesamt erreichen 
will und nicht so sehr Annahmen darüber zu treffen, wie man es erreichen 
könnte und dann das Wie zu hinterfragen. Oft ist der Denkfehler nämlich 
schon im Ansatz und man kann besser helfen, wenn man das Ziel des 
Fragenden kennt."

von m.n. (Gast)


Lesenswert?

holger schrieb:
> 6 x 74hc165

Oder CD4021 als CMOS-Lösung. Kaskadierbare serielle Schieberegister 
lassen sich am einfachsten verdrahten.

von F. P. (pl504)


Lesenswert?

Der 165 oder 4021 klingen recht vielversprechend, auch wenn ich dann die 
48 Bits rein seriell einlesen muß. Danke Euch für die Tips. Mir ist 
wichtig, daß die Daten alle gleichzeitig gelatcht werden, sonst käme 
Müll raus, wenn sie sich während des Auslesens änderten.

von hp-freund (Gast)


Lesenswert?

Na dann besser ein CPLD.
In den XC9572 passt alles und es sind genügend Pins vorhanden.
Damit kannst Du selbst bestimmen wie die Daten geliefert werden.
Seriell, 4-bit, 8-bit usw.

von m.n. (Gast)


Lesenswert?

hp-freund schrieb:
> Na dann besser ein CPLD.
> In den XC9572

Die Idee des Tages!
Am besten die selbstprogrammierende Ausführung im BGA; da kann man die 
vielen Leitungen gleich anlöten :-(

von hp-freund (Gast)


Lesenswert?

TQFP64 mit Adapter ist machbar und die Programmierung ist auch nicht so 
schwer.

von Carl D. (jcw2)


Lesenswert?

F. P. schrieb:
> Der 165 oder 4021 klingen recht vielversprechend, auch wenn ich dann die
> 48 Bits rein seriell einlesen muß. Danke Euch für die Tips. Mir ist
> wichtig, daß die Daten alle gleichzeitig gelatcht werden, sonst käme
> Müll raus, wenn sie sich während des Auslesens änderten.

4021 hat den PL Eingang. PL wie parallel load. Der macht, an allen 4021 
parallel geschaltet, genau das. Gelesen über SPI-Interface mit 1MHz 
Takt, sind die 48Bits in 48μs gelesen, oder mit 20ksamples/s.

von Harald W. (wilhelms)


Lesenswert?

m.n. schrieb:

> Am besten die selbstprogrammierende Ausführung im BGA; da kann man die
> vielen Leitungen gleich anlöten :-(

Genau, dafür sind doch die vielen kleinen Lotkügelchen da, oder?

von W.S. (Gast)


Lesenswert?

m.n. schrieb:
> Die Idee des Tages!

wieso mokierst du dich darüber?

Ein CPLD an dieser Stelle ist genau die richtige Lösung - und das in 
jeder Hinsicht:
- nur ein einziger Chip
- dank TQFP immer noch gut lötbar
- gutmütig im Layout
- gutmütig im Verhalten
- auch mit ner älteren Version der ISE/Webpack gut programmierbar

Das Einzige, was dagegen spricht, ist der Kalk in den Köpfen - und der 
grinst einen fast überall sn. Ich hab grad gestern den aktuellen FA 
gekriegt, wo ein mutiger dm2dsn sein TTL-Grab zuende gebracht hat. Ich 
räume ja ein, daß er sich große Mühe gegeben hat, aber dank veralteter 
Denkweisen kommt eben nur die drittbeste Lösung bei heraus.

W.S.

von Andreas M. (elektronenbremser)


Lesenswert?

Macht man doch per Multiplexing.

8 Ausgänge, pro Stelle einen und 4 Eingänge, für die Bits aller Stellen 
parallel.

von Peter D. (peda)


Lesenswert?

W.S. schrieb:
> Ein CPLD an dieser Stelle ist genau die richtige Lösung

Eindeutig nein.
Die sind erheblich teurer, verbrauchen viel Strom und man muß sich in 
noch ne Programmierumgebung einarbeiten.
Auch sind die 5V CPLDs am Aussterben.
Es geht rasand in Richtung 3,3V, 2,5V 1,8V.
Da geht dann auch wieder stromsparendes CMOS:
https://www.xilinx.com/products/silicon-devices/cpld/coolrunner-ii.html

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich hätte je mich je nach Anwendung / Aufbau entschieden.

Entweder einen aus der 40xx oder 74xxer Reihe oder eben einen µC mit 
genügend Pins.

Ein CPLD wäre auch interessant, falls man noch mehr Logik-Gatter 
einsparen wollte, was wohl hier eher nicht gefordert ist. Bei einem 
modernen µC entfallen meist ohnehin schon die ganzen externen 
Logik-Gatter - bis auf wenige Spezialfunktionen.

Was nun hier die Beste Lösung für das Problem ist, dazu kann ich nichts 
sagen da die anderen Randbedingungen zum Projekt unbekannt sind.

Wenn es nur eine "einfache" Platine sein soll, die 48 Bits ran, dann 
würde ich eher einen passenden µC verwenden.

Wenn man jedoch die 48 Bit exakt Zeitgleich lesen muss (im ns Bereich) 
dann wohl die 40xx / 74xx Lösung.

von Dieter W. (dds5)


Lesenswert?

Gäbe es denn überhaupt einen µC der 48 Bit gleichzeitig - für mich 
gleichbedeutend mit einem Maschinenbefehl - einlesen kann?

von Carl D. (jcw2)


Lesenswert?

Man kann ja auch nacheinander, aber deutlich schneller als Änderungsrate 
der zu lesenden Daten, einlesen. Sind zwei aufeinander folgend gelesene 
Werte gleich, ist alles OK, sind sie nicht gleich, dann hat man einen 
Übergang von einem zum nächsten Wert erwischt und verwirft den ersten, 
liest neu und vergleicht wieder. Quasi Entprellung eines 48bit Werts. 
Man muß nur Shannon einhalten und mehr als 2 (besser mehr) mal so 
schnell abtasten, wie Änderungen erfolgen.

: Bearbeitet durch User
von Cyborg (Gast)


Lesenswert?

F. P. schrieb:
> Danke Euch für die Tips. Mir ist
> wichtig, daß die Daten alle gleichzeitig gelatcht werden, sonst käme
> Müll raus, wenn sie sich während des Auslesens änderten.

Wird doch sowieso nichts, weil die Voraussetzung von dir bisher
ausgeschwiegen wurden. Z.B. ist es wichtig, ob die BCD-Daten
statisch oder gemultiplext vorliegen. Dann kommt die nächste
Problematik. Wie soll der Prozessor die Daten übernehmen?
Seriell kostet Zeit und ist Fehleranfällig. Parallel ist schnell,
aber willst du Pollen oder Interrupt benutzen? Welcher Prozessor?
Hat alles seine Vor-und Nachteile.

von m.n. (Gast)


Lesenswert?

Cyborg schrieb:
> Wird doch sowieso nichts, weil die Voraussetzung von dir bisher
> ausgeschwiegen wurden.

Die Frage ist doch ganz eindeutig. Ob Meßwerte oder Lottozahlen gelesen 
werden sollen ist völlig ohne Belang.

> Z.B. ist es wichtig, ob die BCD-Daten
> statisch oder gemultiplext vorliegen.

Die 48 Bit werden sicherlich keine Multiplexdaten sein :-(

> Seriell kostet Zeit und ist Fehleranfällig.

Es ist wohl kaum davon auszugehen, daß sich parallele BCD-Daten alle 
paar µs ändern. Zeit ist somit reichlich vorhanden.
Allein Deine Schreibweise liefert Fehler :-(

Warum muß um ein so kleines Problem immer soviel Wirbel gemacht werden?

von H. (Gast)


Lesenswert?

Dieter W. schrieb:
> Gäbe es denn überhaupt einen µC der 48 Bit gleichzeitig - für mich
> gleichbedeutend mit einem Maschinenbefehl - einlesen kann?

Selbst bei einem 64-bit µC dann gäbe es noch ein Restrisiko, denn die 
steigende oder fallende Flanke einer Änderung könnte sich gerade im 
Moment des Einlesens innerhalb der Hysterese befinden. Was dann?

Seriell oder parallel - es bleibt nur das redundante Lesen, um eine 
sichere Erkennung zu gewährleisten. Finde ich bei Bedienschaltern 
sowieso eine gute Idee, es gibt ja auch mögliche Fehler noch 
ESD/EMV-Beeinflussung.

von W.S. (Gast)


Lesenswert?

Peter D. schrieb:
> W.S. schrieb:
>> Ein CPLD an dieser Stelle ist genau die richtige Lösung
>
> Eindeutig nein.
> Die sind erheblich teurer, verbrauchen viel Strom und man muß sich in
> noch ne Programmierumgebung einarbeiten.

Ach..

Gibs's zu: du kannst bloß nicht mit sowas umgehen.

Und bevor du über 5 Volt räsonierst, guck lieber ins Datenblatt.

Apropos XC9572:
3.3V, TQFP100, bei Farnell 4.42€ netto, bei Reichelt nur 3.45€ incl. 
MwSt.
Also was soll das Gejammer?

W.S.

von Crazy Harry (crazy_h)


Lesenswert?

3x PCA9555 über I2C

von Peter D. (peda)


Lesenswert?

W.S. schrieb:
> Apropos XC9572:
> 3.3V, TQFP100, bei Farnell 4.42€ netto

Sag ich doch, die sind viel teurer.
Die 74HC165 kosten nur 0,166 * 6 = 0,996€.
Und der Stromverbrauch der XC9572 ist auch erheblich höher (typisch 65mA 
bei 0Hz .. 160mA bei 160MHz).
Außerdem sind sie PRODUCT OBSOLETE.
http://www.xilinx.com/support/documentation/data_sheets/ds065.pdf

Die CPLDs haben uns soviel Ärger gemacht mit den ständigen Abkündigungen 
und Platinenänderungen, die haben wir deshalb aus Neuentwicklungen 
verbannt.

Z.B. ein Design haben wir mit dem PZ5064 gemacht. Dann hat die Philips 
eingestellt und dafür Xilinx ähnliche gebaut. Das Design hat aber nicht 
mehr in den XCR5064 gepaßt, so daß ein XC5128 genommen werden mußte. Der 
hat aber ne etwas andere Pinzuordnung - 1.Redesign. Dann hat Xilinx die 
5V Typen eingestellt, also noch nen 3,3V Regler auf die Platine - 2. 
Redesign. Die XCR3128 sind aber auch nicht mehr für neue Designs 
empfohlen, sondern man soll die 2,5V Typen nehmen. Da die Platine eh 
erweitert wurde, haben wir die CPLDs komplett rausgeschmissen und sind 
den Ärger endlich los.

Ähnliches haben wir mit FPGAs erlebt, wo wir für eine Baugruppe noch 
Restbestände bei nem Broker kaufen mußten. Die Jahresstückzahl ist zu 
gering, als daß sich ein Redesign rechnet.

Wir haben auch einige alte Baugruppen, wo standard PLDs drauf sind. Da 
ist Atmel noch der einzig verbliebene, der ATV16V8 und ATV22V10 
herstellt. Aber wie lange noch.

von Hans-Georg L. (h-g-l)


Lesenswert?

W.S. schrieb:
>
> Apropos XC9572:
> 3.3V, TQFP100, bei Farnell 4.42€ netto, bei Reichelt nur 3.45€ incl.
> MwSt.
> Also was soll das Gejammer?

Da kannst doch gleich einen MC im TQFP100 Gehäuse nehmen. Der hat genug 
Eingänge warum sollte man da zusätzlich ein CPLD spendieren ?

von hp-freund (Gast)


Lesenswert?

F. P. schrieb:
> Mir ist
> wichtig, daß die Daten alle gleichzeitig gelatcht werden,

Genaueres werden wir wohl nie erfahren.
Außerdem scheint der Fall für pl504 bereits gelöst zu sein...

von Peter D. (peda)


Lesenswert?

W.S. schrieb:
> Also was soll das Gejammer?

Es ist uns auch nicht gelungen, die alten Programmiertools mit LPT-Kabel 
unter W7pro/64Bit zum Laufen zu bringen.
Wir mußten daher das teure Platform Cable USB II kaufen. Und nach der 
notwendigen Registrierung konnte man endlich viele GB downloaden und 
stundenlang installieren.
Für den Bastler sind aber 366,91€ (RS), nur um mal mit CPLDs spielen zu 
können, völlig indiskutabel.

von hp-freund (Gast)


Lesenswert?

Na ja, für die XC95xx braucht man nicht das Neueste.
ISE 4.2 (112MB) auf altem Rechner mit LPT tut es auch.

von Georg (Gast)


Lesenswert?

W.S. schrieb:
> Gibs's zu: du kannst bloß nicht mit sowas umgehen.

Gibs zu, du kannst mit Standard-ICs nicht umgehen.

PLD ist Ok, wenn es keine leicht verfügbaren ICs für die Funktion gibt, 
aber das ist hier nicht der Fall, es gibt jede Menge Schieberegister, 
die das leisten, da bietet ein PLD keine Vorteile. Ganz abgesehen davon, 
dass man für ein PLD nach kurzer Zeit keinen Ersatz mehr bekommt, und 
die Hersteller achten eher darauf, dass sie ja nicht durch ein Produkt 
eines anderen Herstellers ersetzt werden können.

Georg

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.