12x BCD in Mikrocontroller einlesen

OP #4723082
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?
Gast #4723587
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."
OP #4723767
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.
#4723898
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.
Gast #4723993
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.
#4724048
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
(Firma: EleLa - www.elela.de) #4724092
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.
#4724168
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.
Gast #4724186
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.
Gast #4724603
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?
Gast #4724715
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.
Gast #4725304
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.
#4725376
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.
#4725876
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.
Gast #4725927
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren