mikrocontroller.net

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


Autor: F. P. (pl504)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hans-Georg L. (h-g-l)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Du nimmst einen MC mit >= 48 Gpio.

Autor: Chris D. (m8nix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... oder du steuerst deine 74374 mit einem 3 To 8 Line Decoder 74238 an.

Autor: holger (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
6 x 74hc165

Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris D. schrieb:
> 74238

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

Autor: google (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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."

Autor: m.n. (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
holger schrieb:
> 6 x 74hc165

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

Autor: F. P. (pl504)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: m.n. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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 :-(

Autor: hp-freund (Gast)
Datum:

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

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Harald W. (wilhelms)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: W.S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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.

Autor: Andreas M. (elektronenbremser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Macht man doch per Multiplexing.

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

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus M. (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dieter W. (dds5)
Datum:

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

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Cyborg (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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.

Autor: m.n. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: W.S. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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.

Autor: Crazy H. (crazy_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
3x PCA9555 über I2C

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hans-Georg L. (h-g-l)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Peter D. (peda)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: hp-freund (Gast)
Datum:

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

Autor: Georg (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.